当使用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忽略丢失的文件并继续工作?
答案 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
找到了这个解决方案