Spark 失败,因为 S3 文件已更新。如何消除这个错误?
Posted
技术标签:
【中文标题】Spark 失败,因为 S3 文件已更新。如何消除这个错误?【英文标题】:Spark failing because S3 files are updated. How to eliminate this error? 【发布时间】:2018-11-14 21:55:24 【问题描述】:我的 Spark 脚本失败,因为在脚本运行时,从中绘制 df 的 S3 存储桶会更新为新文件。我不关心新到达的文件,但显然 Spark 关心。
我已尝试根据错误消息添加 REFRESH TABLE 命令,但这不起作用,因为在执行时无法知道新文件何时到达,因此无法知道该命令的放置位置.我尝试将 REFRESH 命令放在脚本中的 4 个不同位置(换句话说,在脚本中的不同点调用它 4 次) - 都带有相同的失败消息
Caused by: java.io.FileNotFoundException: No such file or directory '<snipped for posting>.snappy.parquet'
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.
我使用以下命令创建 df:df = spark.table('data_base.bal_daily_posts')
那么我该怎么做才能确保到达 S3 post-script-kickoff 的 S3 文件被忽略并且不会出错?
【问题讨论】:
【参考方案1】:将您要处理的文件移动到不同的文件夹(键)并指向 spark 仅使用此文件夹
【讨论】:
【参考方案2】:如果相同(例如,如果读取和写入目录相同,Spark 将首先删除目标中的文件)或其他进程在读取文件时更新了文件,则会发生这种情况。
【讨论】:
以上是关于Spark 失败,因为 S3 文件已更新。如何消除这个错误?的主要内容,如果未能解决你的问题,请参考以下文章
在 emr 中使用 spark 从 S3 读取 avro 失败