gpt4 book ai didi

hadoop - 用于处理原始数据的PIG脚本

转载 作者:行者123 更新时间:2023-12-02 19:38:05 25 4
gpt4 key购买 nike

我正在对原始数据进行生 pig 处理,以从中获得一些结构。

这是示例数据:

Nov 1   18:23:34    dev_id=03   user_id=0123    int_ip=198.0.13.24 response_code=5

预期产量:
(Nov 1 18:23:34, 03, 0123, 198.0.12.24, 5)

我正在尝试CONCAT(month,day,time)并删除“=”之前的信息。我正在使用以下脚本:
A = LOAD '----' using PigStorage('\t') as (m: chararray, d: chararray, t: chararray, devid: chararray, userid: chararray, intip: chararray, response: chararray);

B = foreach A generate CONCAT(CONCAT(CONCAT(CONCAT(mnth, ' '), day), ' '), time);

C = foreach A generate REGEX_EXTRACT(devid, '^.*=(.*)$', 1),REGEX_EXTRACT(userid, '^.*=(.*)$', 1), REGEX_EXTRACT(intip, '^.*=(.*)$', 1),REGEX_EXTRACT(response, '^.*=(.*)$', 1);

Dump B; Dump C;

输出:

(11月1日18:23:34)

(03,0123,198.0.12.24,5)

建议我需要:
  • 我可以合并,联合和加入(B,C)以获得预期的输出吗?由于没有共同的 Realm ,我们该怎么做。
  • 是否有其他方法可以优化脚本或使用Map-Reduce程序获得预期输出的不同过程。

  • 期待得到您的帮助,我们将不胜感激。

    最佳答案

    可能您的问题出在分隔符中。您指定\ t作为分隔符(尽管这是默认设置),但是您输入的数据在字段之间具有空格。

    这是有效的代码:

    $ cat input
    Nov 1 18:23:34 dev_id=03 user_id=0123 int_ip=198.0.13.24 response_code=5

    $ cat script.pig
    A = LOAD 'input' as (mnth: chararray, day: chararray, time: chararray, devid: chararray, userid: chararray, intip: chararray, response: chararray);

    B = foreach A generate CONCAT(CONCAT(CONCAT(CONCAT(mnth, ' '), day), ' '), time),
    REGEX_EXTRACT(devid, '^.*=(.*)$', 1),
    REGEX_EXTRACT(userid, '^.*=(.*)$', 1),
    REGEX_EXTRACT(intip, '^.*=(.*)$', 1),
    REGEX_EXTRACT(response, '^.*=(.*)$', 1);

    DUMP B;

    $ pig -x local script.pig
    ...log messages...
    (Nov 1 18:23:34,03,0123,198.0.13.24,5)

    希望能有所帮助。

    关于hadoop - 用于处理原始数据的PIG脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544078/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com