猪 - 创建给定大小的组
问题描述:
recs = load 'a.txt';
grp = group recs with each group having 5 records;
我需要做类似上面的事情。
因此,如果recs有10条记录,我希望创建组以便每个组每个都有5条记录。猪 - 创建给定大小的组
怎么办?
答
一个可扩展的解决方案是有一个UDF累积记录到一个新书包和输出包时,它有5个元素和空袋(或空),如果它不具有5个元素呢。
一个缺点是每个地图的最后一组可能少于5个元素(所以可以尝试填充空值或丢弃/重新组合它们)。
recs = load 'a.txt';
grp_5 = foreach recs generate GROUPER(*, 5) as group;
grp = filter grp by not IsEmpty(group);
编辑发表评论:
定期袋属性将是很好的UDF通常instantiated在地图上那么它的exec()被调用每个记录的开始。想想像像MAX函数一样通过它流式传输所有记录。
所以,我将不得不在UDF类中使用一个静态变量?或者还有其他方法吗? – dharm0us 2012-03-09 19:45:29
由于使用非静态属性的UDF的生命周期应该更安全。 – Romain 2012-03-09 21:04:37