我正在使用 pyspark 从 mysql 获取数据,该数据仅适用于一张表。我想从 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")
您需要以某种方式获取 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)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)