Converting single tuple with multiple bags into multiple tuples in Pig

to create new topics or reply. | New User Registration

Tagged: 

This topic contains 0 replies, has 1 voice, and was last updated by  Christian Hargraves 2 years, 2 months ago.

  • Creator
    Topic
  • #25154

    I have a line like the following:

    evnt=redeem&lid=1030023&upt=1679&pid=000000000001076056,000000000001072654,000000000001067925&ppt=996,246,366&qty=1,1,1

    I am interested in extracting the lid, pid, ppt, and qty out of the line and creating a tuple for every entry in the pid, ppt and qty.

    I’ve been able to accomplish this for one of those fields with the following:

    logs = foreach logs generate
    REGEX_EXTRACT(original_path, ‘lid=([^&]+)’, 1) as login_id,
    FLATTEN(TOKENIZE(REPLACE(REGEX_EXTRACT(original_path, ‘.*pid=([^&]+)’, 1), ‘,’, ‘ ‘))) as pid;
    This gives me:

    1030023 000000000001076056
    1030023 000000000001072654
    1030023 000000000001067925

    However, I want to do this for the other two fields as well (leaving it at three tuples) and multiple flattens in the same foreach statement isn’t going to give me what I want.

    1030023 000000000001076056 996 1
    1030023 000000000001072654 246 1
    1030023 000000000001067925 366 1

    I am guessing this is going to require a UDF, but I’d like to know if there’s another way around it by using only the provided functions in Pig.

You must be to reply to this topic. | Create Account

Hortonworks Data Platform
The Hortonworks Data Platform is a 100% open source distribution of Apache Hadoop that is truly enterprise grade having been built, tested and hardened with enterprise rigor.
Get started with Sandbox
Hortonworks Sandbox is a self-contained virtual machine with Apache Hadoop pre-configured alongside a set of hands-on, step-by-step Hadoop tutorials.
Modern Data Architecture
Tackle the challenges of big data. Hadoop integrates with existing EDW, RDBMS and MPP systems to deliver lower cost, higher capacity infrastructure.