我正在尝试删除现有的拼图文件,并将其替换为数据框中的数据,该数据框在删除之前读取原始拼图文件中的数据。这是在Azure Synapse中使用的PySpark。
因此,我从一个 Dataframe 创建了Parquet文件,并将其放在路径中:
full_file_path
我正在试着更新这个Parquet地板文件。根据我所阅读的内容,您不能编辑拼图文件,因此作为一种解决办法,我将该文件读取到新的 Dataframe 中:
df = spark.read.parquet(full_file_path)
然后,我使用更新创建一个新的 Dataframe :
df.createOrReplaceTempView("temp_table")
df_variance = spark.sql("""SELECT * FROM temp_table WHERE ....""")
并创建DF_VARIANCE Dataframe 。
然后,我使用以下命令删除原始文件:
mssparkutils.fs.rm(full_file_path, True)
并删除原始文件。但是,当我对df_varance Dataframe 执行任何操作时,比如df_varance.count(),我得到一个FileNotFoundException错误。我真正想做的是:
df_variance.write.parquet(full_file_path)
这也是一个FileNotFoundException错误。但我发现,我尝试对df_VARIANCE Dataframe 执行的任何操作都会产生此错误。因此,我认为这可能与以下事实有关:原始的FULL_FILE_PATH已被删除,而DF_VARIANCE Dataframe 维护了对(现已删除的)文件路径的某种引用,或类似的内容。请帮帮忙。谢谢。
1条答案
按热度按时间xlpyo6sf1#
Spark Dataframe 不是行的集合。Spark Dataframe 使用“延迟执行”。只有当你打电话给
是从源读取、执行转换并写入目标的Spark作业运行。
Spark DataFrame实际上只是一个查询,在最终运行它之前,您可以用其他表达式组合它。
你可能想要从 parquet 转移到三角洲。https://learn.microsoft.com/en-us/azure/synapse-analytics/spark/apache-spark-what-is-delta-lake