0
我想寫一個UDF,它將一個元組作爲輸入並返回一個數據包作爲輸出。我對PIG很新。請幫忙。我有的例子是UPPER.java類的例子。返回一個數據庫在PIG給出一個元組
UDF應該做什麼的示例 輸入是說< 8,9,1,8,9>輸出應該是< {8,2} {9,2} {1,1}> 8出現2次,9次也是1次出現一次。
我想寫一個UDF,它將一個元組作爲輸入並返回一個數據包作爲輸出。我對PIG很新。請幫忙。我有的例子是UPPER.java類的例子。返回一個數據庫在PIG給出一個元組
UDF應該做什麼的示例 輸入是說< 8,9,1,8,9>輸出應該是< {8,2} {9,2} {1,1}> 8出現2次,9次也是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))
ip_flattened = foreach input_data generate FLATTEN($0);
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)})
ip_tobag_flattened = foreach ip_tobag generate FLATTEN($0);
結果:
(8)
(9)
(1)
(8)
(9)
ip_grouped = group ip_tobag_flattened BY $0;
ip_out = foreach ip_grouped generate group, COUNT($1);
結果:
(1,1)
(8,2)
(9,2)
ip_output_bag = foreach ip_out generate TOBAG($0,$1);
結果:
({(1),(1)})
({(8),(2)})
({(9),(2)})
更具體。你想讓你的UDF用元組做什麼? DataBag與它有什麼關係? –
輸入是<8,9,1,8,9>輸出應該是<{8,2} {9,2} {1,1}> 8出現2次,9也是,1出現一次。所以這就像一個頻率計數。我需要使用UDF來做到這一點 – user3011727
這是提出問題的重要信息。試着寫你的代碼,然後我們可以看看你有什麼問題。 –