如何将Pig中的许多映射元组拆分为不同的行

时间:2014-09-25 16:21:05

标签: hadoop dictionary tuples apache-pig elephantbird

我在Pig中的关系看起来像这样:

([account_id#100,
 timestamp#1434,
 id#900],

[account_id#100,
 timestamp#1434,
 id#901],

[account_id#100,
 timestamp#1434,
 id#902])

如您所见,我在元组中有三个地图对象。上面的所有数据都在关系中的$ 0'字段内。所以上面的数据与单个bytearray列的关系。

数据加载如下:

data = load 's3://data/data' using com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad');

DESCRIBE data;

data: {bytearray}

如何将此数据结构拆分为三行,以便输出如下?

data: {account_id:chararray, timestamp:chararray, id:int}
(100, 1434,900)
(100, 1434,901)
(100, 1434,902)

1 个答案:

答案 0 :(得分:0)

如果没有示例输入数据,很难猜测您的问题。如果这是一个中间结果,那么使用STORE将其写出来并将输出文件作为我们可以输入的东西来试用。我能够使用STRSPLIT来解决这个问题,但我不确定你是否认为输入是单列和单行,或者这三个不同的行是否具有相同的列。

在任何一种情况下,使用FLATTEN运算符展平数据并稍后使用STRSPLIT应该会有所帮助。如果我获得更多信息并输入问题的数据,我可以给出一个有效的例子。

Data -> FLATTEN to get out of bag -> STRSPLIT over "," in a FOREACH,GENERATE