REGEX_EXTRACT_ALL在APACHE PIG中未返回正确的结果

时间:2018-08-02 19:38:16

标签: regex apache hadoop apache-pig

我想将非结构化数据转换为结构化形式。数据具有以下格式-(显示1行数据)

Agra - Ahmedabad###     Sat, 24 Jan###  http://www.cleartrip.com/m/flights/results?from=AGR&to=AMD&depart_date=24/01/2015&adults=1&childs=0&infants=0&class=Economy&airline=&carrier=&intl=n&page=loaded        Air India###    15:30 -
14:35###        47h 5m, 3 stops , AI 406###     Rs. 30,336###

我想使用APACHE PIG以以下格式提取数据

(Agra - Ahmedabad,Sat, 24 Jan,http://www.cleartrip.com/m/flights/results?from=AGR&to=AMD&depart_date=24/01/2015&adults=1&childs=0&infants=0&class=Economy&airline=&carrier=&intl=n&page=loaded,Air India,15:30 - 14:35,47h 5m, 3 , AI 406 , 30,336)

我在APACHE PIG中使用以下行:

A = LOAD '/prodqueue_cleartrip_23rdJan15.txt' using PigStorage as (value: chararray);

B = foreach A generate REGEX_EXTRACT_ALL('value', '([^#]+)#+\\s+([^#]+)#+\\s+([^\\s]+)\\s+([^#]+)#+\\s+([0-9]{1,2}:[0-9]{1,2}\\s-\\n[0-9]{1,2}:[0-9]{1,2})#+\\s+([^,]+),\\s([0-9]+)\\sstops\\s,\\s([^#]+)#+\\s+Rs.\\s([^#]+)#+
');


C = LIMIT B 5;

我得到的输出是这样:

()
()
()
()
()

怎么了?

1 个答案:

答案 0 :(得分:0)

这可能只是您输入问题的错字,但

REGEX_EXTRACT_ALL('value', '([^#]+)#+\\s...

将仅搜索文字“值”。您可能希望取出单引号,使其与 field 值匹配。

REGEX_EXTRACT_ALL(value, '([^#]+)#+\\s...