【问题标题】:How to ignore non-existent paths In Pyspark如何忽略 Pyspark 中不存在的路径
【发布时间】:2021-12-28 01:18:25
【问题描述】:

我正在寻找一种从 S3 读取一堆文件的方法,但路径可能不存在。我只想忽略路径不存在的事实,并处理所有可能的信息。我想在文件中读取的示例:

files_to_read = []
for id in ids_to_process:
    for date in dates_to_process:
        files_to_read.append('s3://bucket/date=' + date + '/id=' + id + '/*.parquet')
sqlContext.read.parquet(*files_to_read)

问题是某些 id 可能直到某个日期才开始,虽然我可以弄清楚,以编程方式执行它并不容易。最简单的方法是 a) 如果路径不存在,则忽略文件。 b) 检查路径是否存在。

我尝试过sqlContext.sql("spark.sql.files.ignoreMissingFiles=true"),但似乎不起作用。我会错过任何类似的选择吗?

【问题讨论】:

    标签: apache-spark amazon-s3 pyspark apache-spark-sql


    【解决方案1】:

    这里,丢失文件实际上是指构建DataFrame后目录下的已删除文件

    建议提前判断目标文件是否存在于python中,而不是交给spark。

    【讨论】:

    • 所以对于实际丢失文件的唯一选择是使用类似 boto 的东西来检查路径是否存在?
    • 以我有限的spark经验,目前还没有找到spark中的相关参数。可以尝试使用python的os.path库来判断文件是否存在。但我不确定它是否支持 s3 文件系统。
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    相关资源
    最近更新 更多