我需要一些关于如何使用Java中的hadoop而不是Pig处理基础结构日志的建议,因为我认为Pig在读取日志文件时不支持正则表达式过滤器。
例如,我有cisco日志和Web服务器日志,我想按行过滤特定值并输入hadoop。
网上有一些建议,首先将其更改为csv格式,但是如果日志文件是GBs中该怎么办?
是否可以在“地图”阶段过滤行,即程序将从HDFS中的文件中读取行并将其发送到映射器...
我需要一些关于最佳方式和清洁方式的建议......
感谢。
答案 0 :(得分:6)
我们可以在REGEX
上PIG
operations。 PIG内部仅使用JAVA REGEX specifications。
请仔细阅读以下示例:
myfile = LOAD '999999-99999-2007' AS (a:chararray);
filterfile = FILTER myfile BY a MATCHES '.*DAY+.*';
selectfile = FOREACH filterfile GENERATE a, SIZE(a) AS size;
STORE selectfile INTO '/home/jagadish/selectfile';
示例中使用的文件大小为2.7 GB,包含1100万行。其中正则表达式输出为450,000行。
我相信这会回答你的问题,否则请告诉我。