我正在加载两个数据集 A、B
A= LOAD [datapath]
B= LOAD [datapath]
我想通过 id 字段连接 A 和 B 的所有字段。A 和 B 都有公共(public)字段 id 和其他字段。当我通过 id 执行 JOIN 时:
AB= JOIN A by id, B by id;
结果数据集 AB 包含两个类似的字段 id 列,但是,它只能显示 id 字段的一列。我在这里做错了什么?
最佳答案
这是预期的行为,当连接两个数据集时,所有列都包括在内(即使是您连接的那些列)
可以查一下here
如果你想删除一个列,你可以使用 generate
语句来完成。但首先您需要知道不需要的列的位置。
例如,如果该列位于第 3 个位置
C = FOREACH AB GENERATE $1,$2, $4, $5...;
根据评论编辑 您也可以在不知道位置的情况下使用生成语句。示例:
C = FOREACH AB GENERATE A::id AS id, A::foo AS foo, B::bar AS bar;
关于hadoop - Pig Latin JOIN 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49880864/