我有一个巨大的别名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行)。
我该怎么做?
答案 0 :(得分:0)
由于C
(COUNTS
行N >= 1000
)非常小,您可以使用replicated join,以便在内存中执行,而不会减少相位。这将为您使用HUGE
进行的任何其他操作添加最少的处理。
*请注意,在您的示例中,您按N >= 1000
进行了过滤,但您声明希望ID
使用小计数。不确定这些是你的意图。