Apache pig 猪,如何在袋子里循环元组

Apache pig 猪,如何在袋子里循环元组,apache-pig,Apache Pig,我是新手 我有一个输入,(A,B,{(XYZ,123,CDE)}) 我正在寻找循环通过包内和打印以下记录 (A,B,XYZ) (A,B,123) (A,B,CDE) 有人能帮帮我吗 假设X是您的关系,它具有(A,B,{(XYZ,123,CDE)}。ToBag将表达式转换为bag并展平unnests元组,bag Y = FOREACH X GENERATE $0,$1,ToBag(FLATTEN($2)); 解决了 让我们加载下面的文件(选项卡分隔) A B{(XYZ,123,CDE)}

我是新手

我有一个输入,
(A,B,{(XYZ,123,CDE)})

我正在寻找循环通过包内和打印以下记录

(A,B,XYZ)  
(A,B,123)
(A,B,CDE)

有人能帮帮我吗

假设X是您的关系,它具有
(A,B,{(XYZ,123,CDE)}
。ToBag将表达式转换为bag并展平unnests元组,bag

Y = FOREACH X GENERATE $0,$1,ToBag(FLATTEN($2));
解决了

让我们加载下面的文件(选项卡分隔)

A B{(XYZ,123,CDE)}

这将给

(A、B、XYZ、123、CDE)

现在执行TOBAG操作

intermed2_output = foreach intermed_output generate entry1, entry2, TOBAG(bag1::te1,bag1::te2,bag1::te3);

 DUMP intermed2_output;
这将导致以下输出:-

(A,B,{(XYZ),(123),(CDE)})

现在最后一步是把袋子弄平

final_output = foreach intermed2_output generate entry1, entry2, FLATTEN($2);
我们有我们想要的产出:-

(A,B,XYZ)
(A,B,123)
(A,B,CDE)

您好,使用扁平化将按以下方式打印记录:(A、B、XYZ、123、CDE)我想为包中的每个元组插入一条新记录。@minimalite001尝试ToBag(扁平化($2))
final_output = foreach intermed2_output generate entry1, entry2, FLATTEN($2);
(A,B,XYZ)
(A,B,123)
(A,B,CDE)