我在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)
答案 0 :(得分:0)
如果没有示例输入数据,很难猜测您的问题。如果这是一个中间结果,那么使用STORE将其写出来并将输出文件作为我们可以输入的东西来试用。我能够使用STRSPLIT来解决这个问题,但我不确定你是否认为输入是单列和单行,或者这三个不同的行是否具有相同的列。
在任何一种情况下,使用FLATTEN运算符展平数据并稍后使用STRSPLIT应该会有所帮助。如果我获得更多信息并输入问题的数据,我可以给出一个有效的例子。
Data -> FLATTEN to get out of bag -> STRSPLIT over "," in a FOREACH,GENERATE