Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
hadoop多行混合记录_Hadoop_Logparser - Fatal编程技术网

hadoop多行混合记录

hadoop多行混合记录,hadoop,logparser,Hadoop,Logparser,我想解析fidonet mailer binkd生成的日志文件,这些日志文件是多行的,混合性更差:多个实例可以写入一个日志文件,例如: 27 Dec 16:52:40 [2484] BEGIN, binkd/1.0a-545/Linux -iq /tmp/binkd.conf + 27 Dec 16:52:40 [2484] session with 123.45.78.9 (123.45.78.9) - 27 Dec 16:52:41 [2484] SYS BBSN

我想解析fidonet mailer binkd生成的日志文件,这些日志文件是多行的,混合性更差:多个实例可以写入一个日志文件,例如:

      27 Dec 16:52:40 [2484] BEGIN, binkd/1.0a-545/Linux -iq /tmp/binkd.conf
    + 27 Dec 16:52:40 [2484] session with 123.45.78.9 (123.45.78.9)
    - 27 Dec 16:52:41 [2484] SYS BBSName
    - 27 Dec 16:52:41 [2484] ZYZ First LastName
    - 27 Dec 16:52:41 [2484] LOC City, Country
    - 27 Dec 16:52:41 [2484] NDL 115200,TCP,BINKP
    - 27 Dec 16:52:41 [2484] TIME Thu, 27 Dec 2012 21:53:22 +0600
    - 27 Dec 16:52:41 [2484] VER binkd/0.9.6a-173/Win32 binkp/1.1
    + 27 Dec 16:52:43 [2484] addr: 2:1234/56.78@fidonet
    - 27 Dec 16:52:43 [2484] OPT NDA CRYPT
    + 27 Dec 16:52:43 [2484] Remote supports asymmetric ND mode
    + 27 Dec 16:52:43 [2484] Remote requests CRYPT mode
    - 27 Dec 16:52:43 [2484] TRF 0 0
    *+ 27 Dec 16:52:43 [1520] done (from 2:456/78@fidonet, OK, S/R: 0/0 (0/0 bytes))*
    + 27 Dec 16:52:43 [2484] Remote has 0b of mail and 0b of files for us
    + 27 Dec 16:52:43 [2484] pwd protected session (MD5)
    - 27 Dec 16:52:43 [2484] session in CRYPT mode
    + 27 Dec 16:52:43 [2484] done (from 2:1234/56.78@fidonet, OK, S/R: 0/0 (0/0 bytes))
<> P>因此,日志文件不仅是多行的,每个会话的行数是不可预测的,而且可以在多个行之间混合,如会话1520在会话2484的中间完成。 在hadoop中,解析这样一个文件的正确方向是什么?还是我应该逐行解析,然后以某种方式将它们合并到一个记录中,然后使用另一组作业将这些记录写入SQL数据库


谢谢。

首先,解析文件不是您想要做的;您正试图从数据中提取一些信息

在您的情况下,您可以考虑多步MR作业,其中第一个MR作业将基本上(部分地)通过SESSUTHORID ID排序(做一些过滤?一些聚合?多个约简?),然后减速器或下一个MR作业将进行实际计算。p> 如果不解释您试图从日志文件中提取什么,就很难给出更明确的答案


此外,如果您的数据很小,也许您完全可以在不使用MR机器的情况下对其进行处理?

首先,解析文件不是您想要做的;您正试图从数据中提取一些信息

在您的情况下,您可以考虑多步MR作业,其中第一个MR作业将基本上(部分地)通过SESSUTHORID ID排序(做一些过滤?一些聚合?多个约简?),然后减速器或下一个MR作业将进行实际计算。p> 如果不解释您试图从日志文件中提取什么,就很难给出更明确的答案


另外,如果您的数据很小,也许您完全可以不用MR机器来处理它?

Hadoop的正确方向是开发您自己的输入格式,谁的记录阅读器会这样做 逐行读取输入并生成逻辑记录。
可以这样说——实际上,您也可以在mapper中完成它——它可能会更简单一些。缺点是它不是hadoop代码的标准包装,因此它的可重用性较差


在我看来,您提到的其他方向对于hadoop来说并不“自然”。具体来说,为什么要使用所有复杂(且昂贵)的洗牌机制来连接已经在手的几行呢。

Hadoop的正确方向是开发自己的输入格式,而谁的记录阅读器会呢 逐行读取输入并生成逻辑记录。
可以这样说——实际上,您也可以在mapper中完成它——它可能会更简单一些。缺点是它不是hadoop代码的标准包装,因此它的可重用性较差

在我看来,您提到的其他方向对于hadoop来说并不“自然”。具体地说,为什么要使用所有复杂(昂贵)的洗牌机器来连接已经在手的几条线呢