对症下药真的很重要。
今天在写pig脚本时有一个简单的需求,需要批量输入某路径下部分指定路径下的文件。
Pig脚本中的路径变量应采用shell glob pattern匹配。
参考:
http://teaching.idallen.com/cst8207/13w/notes/190_glob_patterns.html
而Pig 语言中内置的MATCH函数则采用的是Java正则匹配规则。
参考:
https://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html
下面举例说明shell glob pattern 的几个简单规则:
例1:
想要读取以下路径的文件:
user/cris/date=20180801
user/cris/date=20180802
user/cris/date=20180803
%DECLARE INPUT_PATH 'user/cris/date=201808[1-3]'
input = LOAD '${INPUT_PATH}' USING Pigstorage('\t')
例2:
想要读取以下路径的文件:
user/cris/date=20180730
user/cris/date=20180802
%DECLARE INPUT_PATH 'user/cris/date=2018{0730,0802}'
input = LOAD '${INPUT_PATH}' USING Pigstorage('\t')
例3:
想要读取以下路径的文件:
user/cris/date=20180730(some_info)
user/cris/date=20180802(some_other_info)
%DECLARE INPUT_PATH 'user/cris/date=2018{0730,0802}*'
input = LOAD '${INPUT_PATH}' USING Pigstorage('\t')