加载多个文件时缺少PySpark作业失败

时间:2017-02-20 09:10:59

标签: python hadoop apache-spark amazon-s3 pyspark

当使用PySpark从S3加载多个JSON文件时,如果文件丢失,我会收到错误并且Spark作业失败。

  

引起:org.apache.hadoop.mapred.InvalidInputException:输入模式s3n://example/example/2017-02-18/*.json匹配0个文件

这就是我在PySpark的最后几天加入我的工作的方式。

<header>
<field name="DeliverToCompID" required="N"/>

如何让PySpark忽略丢失的文件并继续工作?

1 个答案:

答案 0 :(得分:1)

使用尝试加载文件的函数,如果文件丢失则失败并返回False。

message.Header.SetField(new DeliverToCompID("COMP_C"));

这使您可以在将文件添加到列表之前检查文件是否可用,而无需使用AWS Cli或S3命令。

days = 5
x = 0
files = []

while x < days:
    filedate = (date.today() - timedelta(x)).isoformat()
    path = "s3n://example/example/"+filedate+"/*.json"
    files.append(path)
    x += 1

rdd = sc.textFile(",".join(files))                      
df = sql_context.read.json(rdd, schema)

我在http://www.learn4master.com/big-data/pyspark/pyspark-check-if-file-exists

找到了这个解决方案