我正在按大约20个ID的列表筛选一个表。现在我的代码如下所示:
A = LOAD 'ids.txt' USING PigStorage();
B = LOAD 'massive_table' USING PigStorage();
C = JOIN A BY $0, B BY $0;
D = FOREACH C GENERATE $1, $2, $3, $4, ...
STORE D INTO 'foo' USING PigStorage();
我不喜欢的是第d行,在那里我必须重新生成一个新表,通过显式声明我希望显示的其他每一列(有时会有很多列)来摆脱连接列。我在想,是否有什么东西可以等同于:
FILTER B BY $0 IN (A)
或:
DROP $0 FROM C
2条答案
按热度按时间42fyovps1#
也许和这个问题类似:
如何使用pig拉丁语“更新”列
参考jira票证:https://issues.apache.org/jira/browse/pig-1693 以下是您如何使用。。表示所有剩余字段的符号:
这假设您有0.9.0+pig
ffvjumwh2#
按数字删除列
如果要删除第5列,可以这样做:
按名称删除列
如果要按名称删除列,仅知道要删除的列的名称似乎是不可能的。但是,如果您知道此列前后的列名称,则是可能的。如果要删除colbeforemycol和colaftermycol之间的列,可以这样做: