0

Apache Pig中,我想将变量中保存的列序列化为行。进一步来说:

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

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

我想把它变成

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

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

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

4

1 回答 1

3

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

$ 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

于 2013-08-02T08:43:03.017 回答