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)