我试图使用文件中的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
知道如何实现这个目标吗?
答案 0 :(得分:48)
看the accepted answer,它似乎使用某种形式的glob语法。它还揭示了API是Hadoop FileInputFormat
的曝光。
搜索会显示提供给FileInputFormat
addInputPath
或setInputPath
"may represent a file, a directory, or, by using glob, a collection of files and directories"的路径。也许,SparkContext
也使用这些API来设置路径。
*
(匹配0个或更多字符)?
(匹配单个字符)[ab]
(角色等级)[^ab]
(否定字符类)[a-b]
(字符范围){a,b}
(更改)\c
(转义字符)按照接受的答案中的示例,可以将路径写为:
sc.textFile("/user/Orders/2015072[7-9]*,/user/Orders/2015073[0-1]*")
目前尚不清楚如何使用交替语法,因为逗号用于分隔路径列表(如上所示)。根据{{3}}的评论,不需要转义:
sc.textFile("/user/Orders/201507{2[7-9],3[0-1]}*")