Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache pig 猪的袋子到元组_Apache Pig_Etl - Fatal编程技术网

Apache pig 猪的袋子到元组

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 其中,列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: (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)