如何在pig中将多个Map的元组拆分为不同的行

s2j5cfk0  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(438)

我和Pig的关系是这样的:

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

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

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

如您所见,我在一个元组中有三个map对象。上面的所有数据都在关系中的$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)
ffscu2ro

ffscu2ro1#

如果没有一个样本输入数据,你很难猜出你的问题。如果这是一个中间结果,那么使用一个存储写出它,并将输出文件作为我们可以输入的东西来尝试。我可以用strsplit解决这个问题,但我不确定您的意思是输入是一列和一行,还是这三个不同的行具有相同的列。
在任何一种情况下,使用flatte操作符和稍后使用strsplit将数据展平都会有所帮助。如果我得到更多的信息和输入数据的问题,我可以给一个工作的例子。

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

相关问题