【发布时间】:2022-01-07 15:12:12
【问题描述】:
我需要你的帮助,我在 python 中有一个简单的代码,它列出了 databricks 上所有数据库中表中的所有字段,有将近 90 个表,我想将结果保存在一个txt 或 csv 文件。这是使用的代码,但它需要 8 小时才能完成它太长了我该如何优化或有其他方法让它更快?
# table containing all name of database in databricks
#df_tables = spark.sql("SELECT * FROM bd_xyh_name")
#DynoSQL is a string table for result in txt
def discribe():
try:
for i in df_tables.collect():
showTables="""show tables in {};""".format(i.nombd)
df1=spark.sql(showTables)
for j in df1.collect():
describeTable="""describe table {0}.{1};""".format(j.database,j.tableName)
df2=spark.sql(describeTable)
#df3=df2.collect()
df3 = df2.rdd.toLocalIterator()
for k in df3:
#df=df2.select(df2.col_name;k.data_type)
#spark.sql("insert into NewTable VALUES ("+j.database+";"+j.tableName+";"+k.col_name+";"+k.data_type+");")
spark.sql("insert into DynoSQL select \""+j.database+";"+j.tableName+";"+k.col_name+";"+k.data_type+"\"")
# request="insert into NewTable VALUES ({};{};{};{});""".format(j.database,j.tableName,k.col_name,k.data_type)
#spark.sql(request)
except:
raise
【问题讨论】:
-
在这里发帖时请不要大喊大叫。它不会更快地为您提供帮助,并且全部大写的文本更难以阅读和理解。当您要求我们提供免费帮助以解决您的问题时,对我们大喊大叫也是相当不礼貌的。谢谢。
-
如果取出
spark.sql("insert into DynoSQL select需要多长时间?故障排除的第一步是将问题分解为多个部分并找出问题所在。m 另外...生成的 CSV 中有多少记录?有多少表和数据库? -
@KenWhite 我不知道你在说什么我根本没有喊说它是免费的,我已经知道了,谢谢
-
你的整个标题都是大写的,我把它删掉了。如果您不记得自己输入了什么内容,可以查看revision history。
-
是的,但是 CAPS 中的标题并不一定意味着我尖叫,在电子邮件中你对标题也这样做了,所以我不明白你为什么会这样解释,但还是谢谢你
标签: sql optimization pyspark databricks azure-databricks