我需要一些关于如何在java中使用hadoop而不是pig处理基础设施日志的建议,因为我认为pig在读取日志文件时不支持regex过滤器。例如,我有cisco日志和web服务器日志,我想按行过滤特定的值,并将其输入hadoop。网上有几个建议,比如先把它改成csv格式,但是如果日志文件是gbs格式呢???有没有可能在“Map”阶段过滤行,即程序将读取hdfs文件中的行,并将其发送到Map器。。。我需要一些最好的方法和干净的方法来做这件事的建议。。。。谢谢。
j2datikz1#
我们能做到 REGEX 上的操作 PIG . pig只在内部使用javaregex规范。请看下面的例子:
REGEX
PIG
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.7GB,包含1100万行。其中regex的输出是450000行。我相信这回答了你的问题,否则请告诉我。
1条答案
按热度按时间j2datikz1#
我们能做到
REGEX
上的操作PIG
. pig只在内部使用javaregex规范。请看下面的例子:
示例中使用的文件大小为2.7GB,包含1100万行。其中regex的输出是450000行。
我相信这回答了你的问题,否则请告诉我。