Spark SQL оптимизация запросов - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу загрузить таблицу данных в искровой датафрейм.у меня есть 2 таблицы в моей базе данных. Нужно ли писать 2 раза полные варианты подключения?Есть ли способ написать общие части один раз, а затем просто несколько раз изменить имена таблиц переменных.

table1 = spark.read\
.format("jdbc")\
.option("url","jdbc:oracle:thin:USER/Password@host:port/db_name")\
.option("driver","oracle.jdbc.driver.OracleDriver" )\
.option("dbtable","table_name_1")\
.load()


table2 = spark.read\
    .format("jdbc")\
    .option("url","jdbc:oracle:thin:USER/Password@host:port/db_name")\
    .option("driver","oracle.jdbc.driver.OracleDriver" )\
    .option("dbtable","table_name_2")\
    .load()

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вы можете отдельно создать читателя

reader = (spark.read
  .format("jdbc")
  .option("url","jdbc:oracle:thin:USER/Password@host:port/db_name")
  .option("driver","oracle.jdbc.driver.OracleDriver" ))

и загрузить

table1 = reader.option("dbtable","table_name_1").load()
table2 = reader.option("dbtable","table_name_2").load()
0 голосов
/ 12 февраля 2019

Пожалуйста, ниже фрагмента, надеюсь, это поможет вам.

def load_table_df(table_name):
    # You can define "jdbc:oracle:thin:USER/Password@host:port/db_name" as parameter too.
    return spark.read\
        .format("jdbc")\
        .option("url","jdbc:oracle:thin:USER/Password@host:port/db_name")\
        .option("driver","oracle.jdbc.driver.OracleDriver" )\
        .option("dbtable", table_name)\
        .load()

table1 = load_table_df('table_name_1')
table2 = load_table_df('table_name_2')
...