pyspark 如何等待df.write()完成

3htmauhk  于 2023-06-21  发布在  Spark
关注(0)|答案(1)|浏览(146)

在我的pyspark笔记本里我
1.从表中读取以创建数据框
1.聚合 Dataframe
1.写入文件夹
1.从输出文件夹创建SQL表
为了

#1. I do `spark.read.format("delta").load(path)`
#2. I  do `df = df.filter.(...).groupby(...).agg(...)
#3. I do `df.write.format("delta").mode("append").save(output_folder)`
#4. I do `spark.sql(f"CREATE TABLE IF NOT EXISTS {sql_database}.{table_name} USING delta LOCATION '{path to output folder in #3}'") `

我遇到的问题是我在第3步和第4步之前和之后都有调试打印语句。然后检查输出文件夹中是否有parquet文件,以及创建SQL表时使用的Path是否正确。而且在控制台中也不例外。
但是当我尝试在SQL工具中查看查找新创建表时,却看不到它。
你能告诉我,在创建SQL表之前,我是否需要等待“写”完成?如果是,我需要做什么来等待写入完成?

ozxc1zmp

ozxc1zmp1#

默认情况下,.write是同步操作,因此步骤4将仅在步骤3完成后执行。但实际上,通过使用.saveAsTablepath选项,一步编写和创建一个表会更容易:

df = spark.read.format("delta").load(path)
df = df.filter.(...).groupby(...).agg(...)
df.write.format("delta").mode("append") \
  .option("path", output_folder) \
  .saveAsTable(f"{sql_database}.{table_name}")

相关问题