gpt4 book ai didi

python - Pyspark Invalid Input Exception try except 错误

转载 作者:太空狗 更新时间:2023-10-29 21:34:03 25 4
gpt4 key购买 nike

我正在尝试使用 pyspark 从 s3 读取最近 4 个月的数据并处理数据,但收到以下异常。

org.apache.hadoop.mapred.InvalidInputException: Input Pattern s3://path_to_clickstream/date=201508*

在每个月的第一天,由于 s3 路径中没有条目(一个单独的作业处理数据并将数据上传到 s3 路径,而我的作业在该路径之前运行),作业失败。我想知道是否有办法捕获此异常并允许作业继续处理所有存在的路径?

最佳答案

您可以简单地尝试在加载后立即触发廉价操作并捕获 Py4JJavaError:

from py4j.protocol import Py4JJavaError

def try_load(path):
rdd = sc.textFile(path)
try:
rdd.first()
return rdd
except Py4JJavaError as e:
return sc.emptyRDD()

rdd = try_load(s3_path)
if not rdd.isEmpty():
run_the_rest_of_your_code(rdd)

编辑:

如果你想处理多个路径,你可以分别处理每个路径并合并结果:

paths = [
"s3://path_to_inputdir/month1*/",
"s3://path_to_inputdir/month2*/",
"s3://path_to_inpu‌​tdir/month3*/"]

rdds = sc.union([try_load(path) for path in paths])

如果你想要更好的控制,你可以list content并加载已知文件。

如果这些路径中至少有一个是非空的,你应该能够使事情变得更简单并像这样使用 glob:

sc.textFile("s3://path_to_inputdir/month[1-3]*/")

关于python - Pyspark Invalid Input Exception try except 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31763521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com