Как вставить данные о кустах в таблицу Teradata с использованием искровой оболочки [duplicate]

/ * while loop

5 баксов

1 шоколад = 1 бакс

while my money is greater than 1 bucks 
  select chocolate
  pay 1 bucks to the shopkeeper
  money = money - 1
end

приходят домой и не могут идти во время магазина, потому что мои деньги = 0 баксов * /

#include
int main(){
  int money = 5;

  while( money >= 1){   
    printf("inside the shopk and selecting chocolate\n");
    printf("after selecting chocolate paying 1 bucks\n");
    money = money - 1 ;  
    printf("my remaining moeny = %d\n", money);
    printf("\n\n");
  }

  printf("dont have money cant go inside the shop, money = %d",  money);

  return 0;
} 

бесконечные деньги

while( codition ){ // condition will always true ....infinite loop
  statement(s)
}

, пожалуйста, посетите это видео для лучшего понимания https://www.youtube.com/watch?v = eqDv2wxDMJ8 & Amp; T = 25s

29
задан zero323 13 March 2016 в 14:08
поделиться

3 ответа

Запись данных

  1. Включите применимый драйвер JDBC при отправке приложения или запуске оболочки. Вы можете использовать, например, --packages:
    bin/pyspark --packages group:name:version  
    
    или комбинировать driver-class-path и jars
    bin/pyspark --driver-class-path $PATH_TO_DRIVER_JAR --jars $PATH_TO_DRIVER_JAR
    
    Эти свойства также могут быть установлены с использованием переменной среды PYSPARK_SUBMIT_ARGS до запуска экземпляра JVM или с помощью conf/spark-defaults.conf для установки spark.jars.packages или spark.jars / spark.driver.extraClassPath.
  2. Выберите нужный режим. Писатель Spark JDBC поддерживает следующие режимы: append: добавить содержимое этого: class: DataFrame к существующим данным. overwrite: Перезаписать существующие данные. ignore: тихо игнорируйте эту операцию, если данные уже существуют. error (случай по умолчанию): выдать исключение, если данные уже существуют. Усиления или другие мелкозернистые модификации не поддерживаются
    mode = ...
    
  3. Подготовить URI JDBC, например:
    # You can encode credentials in URI or pass
    # separately using properties argument
    # of jdbc method or options
    
    url = "jdbc:postgresql://localhost/foobar"
    
  4. (Необязательно) Создать словарь аргументов JDBC.
    properties = {
        "user": "foo",
        "password": "bar"
    }
    
  5. Для сохранения данных используйте DataFrame.write.jdbc
    df.write.jdbc(url=url, table="baz", mode=mode, properties=properties)
    
    (подробнее см. pyspark.sql.DataFrameWriter ).

Известные проблемы :

  • Подходящий драйвер не может быть найден, если драйвер был включен с использованием --packages (java.sql.SQLException: No suitable driver found for jdbc: ...) Предполагая, что для решения проблемы нет несоответствия версии драйвера, вы можете добавить класс driver в properties. Например:
    properties = {
        ...
        "driver": "org.postgresql.Driver"
    }
    
  • с помощью df.write.format("jdbc").options(...).save() может привести к: java.lang.RuntimeException: org.apache.spark.sql.execution.datasources.jdbc.DefaultSource не позволяет создавать таблицу как выбранную. Решение неизвестно.
  • в Pyspark 1.3 вы можете попробовать напрямую вызвать метод Java:
    df._jdf.insertIntoJDBC(url, "baz", True)
    

Чтение данных

  1. Выполните шаги 1 -4 из Запись данных
  2. Используйте sqlContext.read.jdbc:
    sqlContext.read.jdbc(url=url, table="baz", properties=properties)
    
    или sqlContext.read.format("jdbc"):
    (sqlContext.read.format("jdbc")
        .options(url=url, dbtable="baz", **properties)
        .load())
    

Известные проблемы и gotchas :

  • Подходящий драйвер не может быть найден - см .: Запись данных
  • Spark SQL поддерживает перенаправление предикатов с источниками JDBC, хотя не все предикаты могут быть сдвинуты вниз. Он также не делегирует ограничения и агрегаты. Возможным обходным решением является замена аргумента dbtable / table действительным подзапросом. См. Например: Работает ли искривление предиката с JDBC? Более одного часа для выполнения pyspark.sql.DataFrame.take (4)
  • By по умолчанию источники данных JDBC загружают данные последовательно, используя один поток исполнителей. Для обеспечения распределенной загрузки данных вы можете: Предоставить разделение column (должно быть IntegeType), lowerBound, upperBound, numPartitions. Предоставьте список взаимоисключающих предикатов predicates, по одному для каждого требуемого раздела.
  • В распределенном режиме (с разделительным столбцом или предикатами) каждый исполнитель работает в своей собственной транзакции. Если исходная база данных изменяется одновременно, нет гарантии, что окончательный вид будет согласован.

Где найти подходящие драйверы:

64
ответ дан Community 19 August 2018 в 13:24
поделиться
  • 1
    Не могли бы вы обновить информацию о том, как обновлять существующие строки в базе данных? – User007 16 August 2018 в 19:24

Отправьте эту ссылку, чтобы загрузить jdbc для postgres и следуйте инструкциям по загрузке jar-файла

https://jaceklaskowski.gitbooks.io/mastering-apache-spark/exercises/spark- Файл-файл-файл-dataframe-jdbc-postgresql.html будет загружен на пути, подобном этому. "/home/anand/.ivy2/jars/org.postgresql_postgresql-42.1.1.jar"

Если ваша искробезопасная версия 2

from pyspark.sql import SparkSession

spark = SparkSession.builder
        .appName("sparkanalysis")
        .config("spark.driver.extraClassPath",
         "/home/anand/.ivy2/jars/org.postgresql_postgresql42.1.1.jar")
        .getOrCreate()

//for localhost database//

pgDF = spark.read \
.format("jdbc") \
.option("url", "jdbc:postgresql:postgres") \
.option("dbtable", "public.user_emp_tab") \
.option("user", "postgres") \
.option("password", "Jonsnow@100") \
.load()


print(pgDF)

pgDF.filter(pgDF["user_id"]>5).show()

сохранит файл как питон и запустите «python соответствующееfilename.py»

-2
ответ дан anand ml 19 August 2018 в 13:24
поделиться

Загрузите драйвер mysql-connector-java и сохраните в папке с искровым jar, обратите внимание на приведенный ниже код python, записывая данные в «acotr1», мы должны создать структуру таблицы acotr1 в базе данных mysql

spark = SparkSession .builder.appName ( "прасадад") мастер ( 'локального') конфигурации ( 'spark.driver.extraClassPath', '. D:. \ искрового 2.1.0-бен-hadoop2.7 \ баночка \ MySQL-разъем-Java -5.1.41-bin.jar '). GetOrCreate ()

sc = spark.sparkContext

из pyspark.sql import SQLContext

sqlContext = SQLContext ( sc)

df = sqlContext.read.format ("jdbc") .options (url = "jdbc: mysql: // localhost: 3306 / sakila", driver = "com.mysql.jdbc.Driver ", dbtable =" actor ", user =" root ", password =" Ramyam01 "). load ()

mysql_url =" jdbc: mysql: // localhost: 3306 / sakila? user = root & amp; password = Ramyam01 "

df.write.jdbc (mysql_url, table =" actor1 ", mode =" append ")

-1
ответ дан y durga prasad 19 August 2018 в 13:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: