在 Apache Pig 中过滤数据

Filtering Data in Apache Pig

嘿,我正在尝试过滤以下输入:

Id       Num
102369   100
623589   200
102369   300
103333   300
103333   100
...

应减少预期输出关系,仅包括 IdNum == 300 之间现有关系的所有 ID - Num 关系:

Id     Num
102369 100
102369 300
103333 300
103333 100

我试过这样的:

grouped = GROUP table BY Num;
filtered = FILTER grouped BY group == 300;
DUMP filtered;

但这不起作用。你能帮我解决这个问题吗?

亲切的问候。

您应该获取 Num==300 的记录的 ID,然后将其用作过滤器。

假设所有 num==300 产生 1 个唯一值 102369

A = FILTER table BY (Num == 300);
B = LIMIT A 1; --This is to ensure you use only 1 value
C = FILTER table by B.[=10=];
DUMP C;

或者如果您有多个 ID 用于 num==300

,则使用 JOIN
 A = FILTER table BY (Num == 300);
 B = JOIN table by Id,A BY A.[=11=];
 C = FOREACH B GENERATE B.[=11=],B.;
 DUMP C;