【问题标题】:pyspark select subset of files using regex/glob from s3pyspark 使用 s3 中的 regex/glob 选择文件子集
【发布时间】:2015-07-21 15:44:16
【问题描述】:

我在 amazon s3 上有一个数字文件,每个文件都按日期 (date=yyyymmdd) 分隔。这些文件可以追溯到 6 个月,但我想限制我的脚本只使用最近 3 个月的数据。我不确定我是否能够使用正则表达式来做类似sc.textFile("s3://path_to_dir/yyyy[m1,m2,m3]*")

其中 m1,m2,m3 表示我想使用的当前日期后的 3 个月。

一个讨论还建议使用sc.textFile("s3://path_to_dir/yyyym1*","s3://path_to_dir/yyyym2*","s3://path_to_dir/yyyym3*") 之类的东西,但这似乎对我不起作用。

sc.textFile( ) 是否接受正则表达式?我知道您可以使用 glob 表达式,但我不确定如何将上述情况表示为 glob 表达式?

【问题讨论】:

    标签: regex amazon-s3 apache-spark glob pyspark


    【解决方案1】:

    对于您的第一个选项,使用花括号:

    sc.textFile("s3://path_to_dir/yyyy{m1,m2,m3}*")
    

    对于您的第二个选项,您可以将每个 glob 读入一个 RDD,然后将这些 RDD 合并为一个:

    m1 = sc.textFile("s3://path_to_dir/yyyym1*")
    m2 = sc.textFile("s3://path_to_dir/yyyym2*")
    m3 = sc.textFile("s3://path_to_dir/yyyym3*")
    all = m1.union(m2).union(m3)
    

    您可以将 glob 与 sc.textFile 一起使用,但不能使用完整的正则表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-07
      • 2016-03-27
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      • 2018-04-19
      • 2017-07-29
      相关资源
      最近更新 更多