如何通过一组ID过滤别名?

时间:2014-07-17 19:11:12

标签: apache-pig

我有一个巨大的别名HUGE,其中有一个字段ID。 我还有一个别名COUNTS,由ID编制索引。 我想创建一个别名FILTERED,它与HUGE相同但只包含小计数的ID,例如:

A = join HUGE by ID, COUNTS by ID;
B = filter A by COUNTS::N < 1000;
FILTERED = foreach B generate HIGE::*;

问题是HUGE是巨大的(1B行),而我删除的ID的数量相对较小。 因此,我希望能够执行以下操作,而不是非常昂贵的join

C = foreach (filter COUNTS by N >= 1000) generate ID;
FILTERED = filter HUGE by ID not in C;

这里C相对较小(比如10k行)。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

由于CCOUNTSN >= 1000)非常小,您可以使用replicated join,以便在内存中执行,而不会减少相位。这将为您使用HUGE进行的任何其他操作添加最少的处理。

*请注意,在您的示例中,您按N >= 1000进行了过滤,但您声明希望ID使用计数。不确定这些是你的意图。