【问题标题】:Pyspark save file as parquet and readPyspark 将文件保存为镶木地板并读取
【发布时间】: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


【解决方案1】:

您正在尝试管理与同一个文件相关的两个对象,因此涉及这些对象的缓存会给您带来问题,它们都针对同一个文件。这里有一个简单的解决方案,

https://stackoverflow.com/a/60328199/5647992

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 2018-08-13
    • 2021-03-19
    • 2021-11-10
    • 2019-11-27
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多