gpt4 book ai didi

hadoop - 使用Pig将非结构化数据转换为结构化数据

转载 作者:行者123 更新时间:2023-12-02 21:52:55 25 4
gpt4 key购买 nike

我正在尝试使用PIG进行非结构化数据的结构以进行一些处理。

这是数据示例:

Nov 1   18:23:34    dev_id=03   user_id=000 int_ip=198.0.13.24  ext_ip=68.67.0.14   src_port=99 dest_port=213   response_code=5

预期输出:
Nov 1 18:23:34, 03 , 000, 198.0.13.24, 68.67.0.14, 99, 213, 5

如我们所见,数据没有正确分开(例如制表符或逗号),所以我尝试使用'\ t'加载数据并转储到终端上。
A = LOAD '----' using PigStorage('\t') as (mnth: chararray, day: int, --------);

dump A;

Store A into '\root\output';

输出:

转储输出:
(Nov,1,18:23:34,dev_id=03,user_id=000,int_ip=198.0.13.24,ext_ip=68.67.0.14,src_port=99,dest_port=213,response_code=5)

商店产品:
结果存储与输入相同,而不是转储(逗号分隔)。
Nov 1   18:23:34    dev_id=03   user_id=000 int_ip=198.0.13.24  ext_ip=68.67.0.14   src_port=99 dest_port=213   response_code=5

替代方法:我还尝试使用DataStorage()作为(值:varchar)加载数据,并且还执行了TOKENIZE,但无法实现目标。

我需要几个建议:
  • 当我将3个字段存储为Month:“Nov”,Day:“1”和Time:“18:23:34”。是否可以将所有三个字段都作为时间加入:“11月1日18:23:34”。
  • 所有数据都存储有dev_id = 03,user_id = 000之类的信息,但我需要删除该信息并存储诸如03,000,198.0.13.24之类的信息。

  • 是否可以使用PIG进行所有处理,或者我们需要编写MapReduce程序。

    编辑:1

    得到评论后,我为单列尝试了REGEX_EXTRACT,效果很好。对于多列,我尝试了REGEX_EXTRACT_ALL,如下所示:
    A = LOAD '----' using PigStorage('\t') as (mnth: chararray, day: int, dev: chararray, user: chararray --------);

    B = foreach A generate REGEX_EXTRACT_All(devid, userid, '(^.*=(.*)$) (^.*=(.*)$)');

    Dump B;

    我收到错误消息:
    Error: ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve REGEX_EXTRACT_All using imports.

    我们可以使用REGEX_EXTRACT_All提取多个字段吗?

    最佳答案

    只需为您的数据编写一个自定义加载器,您的所有问题都可以使用Java轻松解决。
    循序渐进的示例可以在here中找到

    关于hadoop - 使用Pig将非结构化数据转换为结构化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18489746/

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