【问题标题】:How to parse through a column in Pig to create additional columns如何解析 Pig 中的列以创建其他列
【发布时间】:2013-03-08 00:32:35
【问题描述】:

这里是新的 Apache Pig 用户。我基本上有某种格式的数据,需要将其拆分为 6 列以创建我想要的架构,然后加载到 Pig 以运行我现有的脚本。

对不起,如果下面的格式不整齐,由于声誉评分,我无法上传图片。

现有格式有 3 列
用户设备值::key:bytearray values:value:bytearray
user1-mobile 20130306-AC 9
user1-mobile 20130306-AT 21
user2-笔记本电脑 20130306-BC 0

要求格式:
用户设备日期类型“计数或时间”值

user1 手机 20130306 A C 9

user1 手机 20130306 A T 21

关于如何完成这项工作的任何建议?我需要写一个正则表达式吗? 棘手的是,除了“Type”和“C or T”列之外,所有列之间都有一个分隔符(-)

【问题讨论】:

    标签: regex parsing apache-pig


    【解决方案1】:

    如果您没有通用分隔符,我可以想到两种可能性:

    1. 您可以按照此处的说明实现自己的 LoadFunc:http://ofps.oreilly.com/titles/9781449302641/load_and_store_funcs.html

    2. 您可以使用REGEX_EXTRACT_ALL,如下所述:Apache Pig: Extra query parameters from web log

    给你 2.:

    A = LOAD 'abc.txt' AS (line:CHARARRAY);
    B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line, '^(.+?)\\-(.+?)\\s(.+?)\\-(.)(.)\\s(.+)$')) AS (User:CHARARRAY,Equipment:CHARARRAY,Date:CHARARRAY,Type:CHARARRAY,CountorTime:CHARARRAY,Value:CHARARRAY);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 2020-07-04
      • 1970-01-01
      相关资源
      最近更新 更多