我正在使用亚马逊的弹性地图缩小。
我的日志文件看起来像这样
random text foo="1" more random text foo="2"
more text notamatch="5" noise foo="1"
blah blah blah foo="1" blah blah foo="3" blah blah foo="4" ...
如何编写一个pig表达式来挑选'foo'表达式中的所有数字?
我更喜欢看起来像这样的元组:
(1,2)
(1)
(1,3,4)
我尝试了以下内容:
TUPLES = foreach LINES generate FLATTEN(EXTRACT(line,'foo="([0-9]+)"'));
但这只会产生每一行的第一场比赛:
(1)
(1)
(1)
答案 0 :(得分:0)
您可以使用STRSPLIT
:http://pig.apache.org/docs/r0.8.0/piglatin_ref2.html#STRSPLIT
要拆分的正则表达式是[^0-9]+
(即不是数字)
这将有效地分割大部分非数字,只留下数字的标记。
另一种选择是编写Pig UDF。
答案 1 :(得分:0)
REGEX_EXTRACT函数可以帮助您获得所需的输出
REGEX_EXTRACT(输入,'foo =(。*)',2)AS输入;