【发布时间】:2018-05-14 03:37:57
【问题描述】:
我的PySpark 脚本将创建的DataFrame 保存到一个目录中:
df.write.save(full_path, format=file_format, mode=options['mode'])
如果我在同一次运行中读取了这个文件,一切都很好:
return sqlContext.read.format(file_format).load(full_path)
但是,当我尝试在另一个脚本运行中从该目录读取文件时,我收到一个错误:
java.io.FileNotFoundException: File does not exist: /hadoop/log_files/some_data.json/part-00000-26c649cb-0c0f-421f-b04a-9d6a81bb6767.json
我知道我可以通过 Spark 的提示找到解决方法:
It is possible the underlying files have been updated. You can explicitly invalidate the cache in Spark by running 'REFRESH TABLE tableName' command in SQL or by recreating the Dataset/DataFrame involved.
但是,我想知道我失败的原因,以及解决此类问题的正统方法是什么?
【问题讨论】:
-
该文件是否存在,是否可供运行其他脚本的集群使用?
-
是的,文件存在直到我执行
ls /hadoop/log_files/some_data.json/,但是,当我执行/hadoop/log_files/some_data.json/part-00000-26c649cb-0c0f-421f-b04a-9d6a81bb6767.json,然后no such file ordirectory exists -
你试过重启你的内核吗?
-
不,我没有)我会尝试,但如果它有效,那对我来说会很奇怪)
-
文件在本地还是hdfs?
标签: json dataframe pyspark parquet pyspark-sql