Java 关于如何处理日志的hadoop建议

Java 关于如何处理日志的hadoop建议,java,regex,linux,apache-pig,Java,Regex,Linux,Apache Pig,我需要一些关于如何在Java中使用hadoop而不是Pig处理基础设施日志的建议,因为我认为Pig在读取日志文件时不支持正则表达式过滤器 例如,我有cisco日志和web服务器日志,我想按行过滤特定值并将其输入hadoop 在线上有两个建议,即首先将其更改为csv格式,但是如果日志文件是GBs格式的呢 是否可以在“映射”阶段过滤行,即程序将从HDFS中的文件中读取行并将其发送给映射器 我需要一些关于最佳方式和清洁方式的建议 谢谢。我们可以执行REGEXonPIG。猪只在内部使用 请检查以下示例:

我需要一些关于如何在Java中使用hadoop而不是Pig处理基础设施日志的建议,因为我认为Pig在读取日志文件时不支持正则表达式过滤器

例如,我有cisco日志和web服务器日志,我想按行过滤特定值并将其输入hadoop

在线上有两个建议,即首先将其更改为csv格式,但是如果日志文件是GBs格式的呢

是否可以在“映射”阶段过滤行,即程序将从HDFS中的文件中读取行并将其发送给映射器

我需要一些关于最佳方式和清洁方式的建议


谢谢。

我们可以执行
REGEX
on
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万行。其中正则表达式输出为450000行


我相信这回答了您的问题,否则请告诉我。

我们可以在
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万行。其中正则表达式输出为450000行


我相信这回答了你的问题,否则请让我知道。

你似乎在linux上,为什么不使用
grep
sed
,…?我知道这些,但是日志非常庞大,我想创建一些统计数据,我已经尝试使用pig按IP过滤web服务器日志,但是用正则表达式达到了极限…所以我希望用hadoop直接在Java中实现它。那么你认为Java比
grep
更有效吗?祝你好运。@Kristigitx,为什么Java会比grep快?使用grep,您可能只受到磁盘读取速度的限制。在这种情况下,Java对您没有帮助。@Kristigitx Hadoop通常在处理事情时更快,因为MapReduce算法提供了固有的并行性。然而,如果你在进入地图阶段之前进行过滤,我认为不会有太多的平行性。我能想到的唯一方法可能是定制输入格式,尽管这只有在inputformats并行运行时才有帮助(我不确定这是什么)。如果他们这样做了,如果绝对必须在映射器之前完成,那么这是您的最佳选择。然而,我个人建议将过滤器移到映射器上。您似乎在linux上,为什么不使用
grep
sed
,…?我知道这些,但是日志非常庞大,我想创建一些统计数据,我已经尝试使用pig按IP过滤web服务器日志,但是用正则表达式达到了极限…所以我希望用hadoop直接在Java中实现它。那么你认为Java比
grep
更有效吗?祝你好运。@Kristigitx,为什么Java会比grep快?使用grep,您可能只受到磁盘读取速度的限制。在这种情况下,Java对您没有帮助。@Kristigitx Hadoop通常在处理事情时更快,因为MapReduce算法提供了固有的并行性。然而,如果你在进入地图阶段之前进行过滤,我认为不会有太多的平行性。我能想到的唯一方法可能是定制输入格式,尽管这只有在inputformats并行运行时才有帮助(我不确定这是什么)。如果他们这样做了,如果绝对必须在映射器之前完成,那么这是您的最佳选择。然而,我个人建议只将过滤器移动到映射器。我更喜欢使用Java API而不是pig,因为它是更好的正则表达式过滤器并允许更多的控制。我更喜欢使用Java API而不是pig,因为它是更好的正则表达式过滤器并允许更多的控制。。