【问题标题】:PIG : Split array elements into different rowsPIG:将数组元素拆分为不同的行
【发布时间】:2016-11-15 15:53:18
【问题描述】:

说架构是这样的:

gen_data: {a: chararray,f: chararray}

输入: (4,[IAB9, IAB9-7, IAB1, IAB9-30])

想要的输出:

(4,IAB9)

(4,IAB9-7)

(4,IAB1)

(4,IAB9-30)

我想将每个数组元素与其他列一起放在不同的行中。

我无法获得上述所需的输出。请帮我实现这个输出。任何帮助表示赞赏。

【问题讨论】:

    标签: arrays apache-pig flatten


    【解决方案1】:

    使用 '[' 作为分隔符并加载数据。这将为您提供 4,和IAB9,IAB9-7,IAB1,IAB9-30]。去掉第一列的,和第二列的']'。然后使用STRSPLIT或TOKENIZE和TOBAG

    A = LOAD 'data.txt' USING PigStorage('[') AS (f1:chararray,f2:chararray);
    B = FOREACH A GENERATE REPLACE(f1,',',''),REPLACE(f2,']','');
    C = FOREACH B GENERATE $0,FLATTEN(STRSPLIT($1,','));
    D = FOREACH C GENERATE $0,FLATTEN(TOBAG($1,$2,$3,$4)); -- Try TOBAG(*) if this doesn't work
    DUMP D;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-20
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      相关资源
      最近更新 更多