我正在运行一个 PySpark作业,该作业会从文件中读取数据(如果存在),如果不存在,则会创建一个空的数据框,然后在下次运行该作业时将其写为文件。
>我有相同的代码在不同的工作中工作,但为此。每当我第二次运行该文件时,即使存在文件,也会抛出错误,提示不存在文件,然后然后将其删除。
任何信息都会有所帮助。谢谢。
def load_master_logs(spark, master_path):
# verify master file exists, if not, create one with headers
file_mask = "part*.csv"
if glob.glob(os.path.join(master_path, file_mask)):
master_file = glob.glob(os.path.join(master_path, file_mask))[0]
master_df = spark.read.csv(master_file, header=True, schema=MASTER_SCHEMA)
else:
log_and_send_to_slack("No existing master file found creating new one")
master_df = spark.createDataFrame([], schema=MASTER_SCHEMA)
master_df.cache()
return master_df
答案 0 :(得分:0)
所以我最终使它工作了,好像与Spark SQL SaveMode.Overwrite, getting java.io.FileNotFoundException and requiring 'REFRESH TABLE tableName'一样,我能够通过创建一个临时目录来写入文件,然后删除所需目录中的所有文件,然后从温度不知道为什么这样行得通,而删除和重新创建文件夹却行不通,因此希望从任何对底层代码足够了解的人那里了解逻辑。还仍然不知道为什么原始代码可以在其他工作上正常工作吗?