在 pig 中的 foreach 语句后过滤
Filter after a foreach statement in pig
所以我有 table 一列,U 和列名称 u_id。
filter_out = filter A BY s_id == (FOREACH u GENERATE u_id);
我基本上是在尝试通过匹配 u table 中的每一行来过滤 A table。
所以本质上,如果来自 A(table1) 的 s_id 与第二 tables 中的 u_id 匹配,则将其过滤掉
我一直收到不匹配的输入 'u' expecting LEFT_PAREN
错误
------------第二种方法----------------
并且还尝试将 u 转换为元组
totuple = FOREACH u GENERATE TOTUPLE (u_id);
filter_out = filter A BY s_id in (totuple);
和错误 A column needs to be projected from a relation for it to be used as a scalar
相反,JOIN 两个 tables.Doing 因此只会将 table A 中的记录与 table U.Finally 中的记录相匹配,生成所需的列。
B = JOIN A BY s_id,U BY u_id;
C = FOREACH B GENERATE B.[=10=]; -- Select the needed columns from the joined relation.
DUMP C;
所以我有 table 一列,U 和列名称 u_id。
filter_out = filter A BY s_id == (FOREACH u GENERATE u_id);
我基本上是在尝试通过匹配 u table 中的每一行来过滤 A table。 所以本质上,如果来自 A(table1) 的 s_id 与第二 tables 中的 u_id 匹配,则将其过滤掉
我一直收到不匹配的输入 'u' expecting LEFT_PAREN
错误
------------第二种方法----------------
并且还尝试将 u 转换为元组
totuple = FOREACH u GENERATE TOTUPLE (u_id);
filter_out = filter A BY s_id in (totuple);
和错误 A column needs to be projected from a relation for it to be used as a scalar
相反,JOIN 两个 tables.Doing 因此只会将 table A 中的记录与 table U.Finally 中的记录相匹配,生成所需的列。
B = JOIN A BY s_id,U BY u_id;
C = FOREACH B GENERATE B.[=10=]; -- Select the needed columns from the joined relation.
DUMP C;