Apache pig 猪的袋子到元组
我有四列A、B、C、D 其中,列D具有所有值sameeg:'D' 数据是 我想找到C上的中位数,并将其存储在列中位数下。A、B、C、D的其余部分应与往常一样。 1.D组表现良好 2使用ApacheFu包在C上查找中值 我想要Apache pig 猪的袋子到元组,apache-pig,etl,Apache Pig,Etl,我有四列A、B、C、D 其中,列D具有所有值sameeg:'D' 数据是 我想找到C上的中位数,并将其存储在列中位数下。A、B、C、D的其余部分应与往常一样。 1.D组表现良好 2使用ApacheFu包在C上查找中值 我想要 A,B,C,D,Median 1,b,1,d,3 2,x,3,d,3 3,y,3,d,3 但我明白了 {A: {(A: long)},B: {(B: chararray)},C: {(C: long)},D: {(B: chararray)},Median: (quant
A,B,C,D,Median
1,b,1,d,3
2,x,3,d,3
3,y,3,d,3
但我明白了
{A: {(A: long)},B: {(B: chararray)},C: {(C: long)},D: {(B: chararray)},Median: (quantile_0_5: double),}
我希望所有的袋子都被移除,用作元组。
有人能提出一些建议来获得所需的输出吗?看看UDF。它需要一个包并将其转换为一个元组,因此您必须为每个包和每个列调用它一次。这个的输出将为每个列提供一个元组,而不是整行的元组,我想这不是您想要的,所以将BagToTuple的输出展平:
你能分享你的代码吗?
{A: {(A: long)},B: {(B: chararray)},C: {(C: long)},D: {(B: chararray)},Median: (quantile_0_5: double),}
input_data = load 'input' using PigStorage(',') as (A: bag{(a: long)}, B: bag{(b: chararray)}, C: bag{(c: long)}, D: bag{(d: chararray)}, Median: bag{(median: double)});
dump input_data;
({(1)},{(b)},{(1)},{(d)},{(3.0)})
({(2)},{(x)},{(3)},{(d)},{(3.0)})
({(3)},{(y)},{(3)},{(d)},{(3.0)})
output = foreach input_data generate FLATTEN(BagToTuple($0)),
FLATTEN(BagToTuple($1)),
FLATTEN(BagToTuple($2)),
FLATTEN(BagToTuple($3)),
FLATTEN(BagToTuple($4));
dump output;
(1,b,1,d,3.0)
(2,x,3,d,3.0)
(3,y,3,d,3.0)