【问题标题】:In Apache Pig how can I serialise columns into rows?在 Apache Pig 中,如何将列序列化为行?
【发布时间】:2013-08-02 07:09:55
【问题描述】:

Apache Pig 中,我想将变量中保存的列序列化为行。更具体地说:

加载到变量中的数据看起来像(通过DUMP

(val1a, val2a,.... )
(val1b, val2b,val3b,.... )
(val1c, val2c,.... )
.
.
.

我想把它变成

(val1a)
(val2a)
.
.
.
(val1b)
(val2b)
(val3b)
.
.
.
(val1c)
(val2c)
.
.
.

因此,必须将每一列“序列化”成行,然后随后添加这些行。请注意:我不一定知道每行有多少列。

如何在Pig Latin 中执行此操作?在例如 Python 中会很容易,但我不知道如何在 Pig 中做到这一点。我尝试了不同的 foreach ... generate 构造,但无法使其工作。

【问题讨论】:

    标签: rows apache-pig dynamic-columns


    【解决方案1】:

    一种展开元组和创建多个元组的方法,每个元组包含一个字段:

    $ cat data.txt
    val1a,val2a,val3a,val4a,val5a,val6a,val7a
    val1b,val2b,val3b
    val1c,val2c
    

    A = load 'data.txt' using PigStorage(',');
    B = foreach A generate FLATTEN(TOBAG(*));
    dump B;
    
    (val1a)
    (val2a)
    (val3a)
    (val4a)
    (val5a)
    (val6a)
    (val7a)
    (val1b)
    (val2b)
    (val3b)
    (val1c)
    (val2c)
    

    注意: 您还可以查看这些类似的帖子:
    Splitting a tuple into multiple tuples in Pig
    Pivot table with Apache Pig

    【讨论】:

    • 伟大而正确的答案。我已经对其进行了测试,它的工作原理与描述的一样。类似帖子的链接肯定会进一步丰富它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多