Как получить несколько таблиц, используя спарк SQL - PullRequest
0 голосов
/ 02 февраля 2019

Я получаю данные из mysql, используя pyspark, который предназначен только для одной таблицы. Я хочу получить все таблицы из базы данных mysql.Не хочу вызывать JDBC соединение снова и снова.см. код ниже

Можно ли упростить мой код?Заранее спасибо

url = "jdbc:mysql://localhost:3306/dbname"
table_df=sqlContext.read.format("jdbc").option("url",url).option("dbtable","table_name").option("user","root").option("password", "root").load()
sqlContext.registerDataFrameAsTable(table_df, "table1")

table_df_1=sqlContext.read.format("jdbc").option("url",url).option("dbtable","table_name_1").option("user","root").option("password", "root").load()
sqlContext.registerDataFrameAsTable(table_df_1, "table2")

1 Ответ

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

вам нужно каким-то образом получить список таблиц, которые у вас есть в mysql.Либо вы найдете несколько команд sql для этого, либо вы вручную создадите файл, содержащий все.

Затем, если вы можете создать список имен таблиц в python tablename_list, вы можете просто зациклить его следующим образом:

url = "jdbc:mysql://localhost:3306/dbname"
reader = sqlContext.read.format("jdbc").option("url",url).option("user","root").option("password", "root")
for tablename in tablename_list:
    reader.option("dbtable",tablename).load().createTempView(tablename)

Это создаст временное представление с тем же именем таблицы,Если вам нужно другое имя, вы можете изменить начальный tablename_list на список кортежей (tablename_in_mysql, tablename_in_spark).

...