在Hadoop中,我有很多看起来像这样:(item_id,owner_id,counter)
-可能重复,但item_id
始终具有相同的owner_id
!
我想获取每个counter
的item_id
的总和,所以我有以下脚本:
alldata = LOAD '/path/to/data/*' USING D; -- D describes the structure
known_items = FILTER alldata BY owner_id > 0L;
group_by_item = GROUP known_data BY (item_id);
data = FOREACH group_by_item GENERATE group AS item_id, OWNER_ID_COLUMN_SOMEHOW, SUM(known_items.counter) AS items_count;
问题是在
FOREACH
中,如果我想使用known_items.owner_id
-那将是一个具有所有分组的item_id
的总和的元组。获取第一个所有者的最有效方法是什么?
最佳答案
如果您假设每个item_id
具有相同的owner_id
是正确的,那么最简单的解决方案将为您提供正确的答案,如果不正确,则会让您知道:将owner_id
包含在组中。
alldata = LOAD '/path/to/data/*' USING D; -- D describes the structure
known_items = FILTER alldata BY owner_id > 0L;
group_by_item = GROUP known_data BY (item_id, owner_id);
data = FOREACH group_by_item GENERATE FLATTEN(group), SUM(known_items.counter) AS items_count;
关于hadoop - 通过id的Hadoop Pig GROUP,获取owner_id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14279549/