gpt4 book ai didi

scala - 如何使用正则表达式在 sc.textFile 中包含/排除某些输入文件?

转载 作者:行者123 更新时间:2023-12-03 12:02:28 25 4
gpt4 key购买 nike

我试图在文件中使用 Apache spark 过滤掉特定文件的日期到 RDD 函数 sc.textFile() .

我尝试执行以下操作:

sc.textFile("/user/Orders/201507(2[7-9]{1}|3[0-1]{1})*")

这应该匹配以下内容:
/user/Orders/201507270010033.gz
/user/Orders/201507300060052.gz

知道如何实现这一目标吗?

最佳答案

看着 the accepted answer ,它似乎使用了某种形式的 glob 语法。还透露该API是Hadoop的FileInputFormat的一次曝光。 .

搜索显示提供给 FileInputFormat 的路径的 addInputPathsetInputPath "may represent a file, a directory, or, by using glob, a collection of files and directories" .也许,SparkContext还使用这些 API 来设置路径。

syntax of the glob包括:

  • * (匹配 0 个或多个字符)
  • ? (匹配单个字符)
  • [ab] (字符类)
  • [^ab] (否定字符类)
  • [a-b] (字符范围)
  • {a,b} (交替)
  • \c (转义字符)

  • 按照已接受答案中的示例,可以将您的路径写为:
    sc.textFile("/user/Orders/2015072[7-9]*,/user/Orders/2015073[0-1]*")

    不清楚此处如何使用交替语法,因为逗号用于分隔路径列表(如上所示)。根据 zero323的评论,没有转义是必要的:
    sc.textFile("/user/Orders/201507{2[7-9],3[0-1]}*")

    关于scala - 如何使用正则表达式在 sc.textFile 中包含/排除某些输入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31782763/

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