在 Apache Pig 中过滤数据
Filtering Data in Apache Pig
嘿,我正在尝试过滤以下输入:
Id Num
102369 100
623589 200
102369 300
103333 300
103333 100
...
应减少预期输出关系,仅包括 Id
和 Num == 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;
嘿,我正在尝试过滤以下输入:
Id Num
102369 100
623589 200
102369 300
103333 300
103333 100
...
应减少预期输出关系,仅包括 Id
和 Num == 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;