在PIG中返回给定元组的数据条

时间:2014-03-31 19:44:50

标签: apache-pig

我正在尝试编写一个UDF,它将一个元组作为输入并返回一个数据条作为输出。我对PIG很新。请帮忙。我的例子是UPPER.java类示例。

UDF应该做什么的例子 输入是< 8,9,1,8,9>输出应为< {8,2} {9,2} {1,1}> 8次出现2次,9次出现,1次出现。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

<小时/> 第1步:加载输入文件

input_data= load '/idn/home/ksing143/tuple_related_data/tuple_frequency.txt' USING PigStorage() AS ip_tuple:tuple(a:int, b:int, c:int, d:int, e:int);

结果:

((8,9,1,8,9))


第2步:展平输入元组

ip_flattened = foreach input_data generate FLATTEN($0);


第3步:转换为包

ip_tobag = foreach ip_flattened generate TOBAG(ip_tuple::a,ip_tuple::b,ip_tuple::c,ip_tuple::d,ip_tuple::e);

结果:

({(8),(9),(1),(8),(9)})


第4步:展开行李

ip_tobag_flattened = foreach ip_tobag generate FLATTEN($0);

结果:

(8)
(9)
(1)
(8)
(9)


第5步:执行分组,然后计算

ip_grouped = group ip_tobag_flattened BY $0;
ip_out = foreach ip_grouped generate group, COUNT($1);

结果:

(1,1)
(8,2)
(9,2)

<小时/> 第6步:按照包的形式转换输出TOBAG。

ip_output_bag = foreach ip_out generate TOBAG($0,$1);

结果:

({(1),(1)})
({(8),(2)})
({(9),(2)})