【问题标题】:Pig Latin JOIN errorPig Latin JOIN 错误
【发布时间】:2018-09-27 14:00:14
【问题描述】:

我正在加载两个数据集 A、B

A= LOAD  [datapath]
B= LOAD  [datapath]

我想通过 id 字段加入 A 和 B 的所有字段。A 和 B 都有共同的字段 id 和其他字段。当我通过 id 执行 JOIN 时:

AB= JOIN A by id, B by id;

生成的数据集 AB 包含两个相似的字段 id 列,但是,它必须只显示 id 字段的一列。我在这里做错了什么?

【问题讨论】:

    标签: hadoop hdfs bigdata apache-pig


    【解决方案1】:

    这是预期的行为,当加入两个数据集时,所有列都包括在内(即使是你加入的那些)

    您可以查看here

    如果您想删除一列,您可以使用generate 语句来完成。但首先你需要知道不需要的列的位置。

    例如,如果该列位于第 3 位

    C = FOREACH AB GENERATE $1,$2, $4, $5...;
    

    从 cmets 编辑 您也可以在不知道位置的情况下使用生成语句。示例:

    C = FOREACH AB GENERATE A::id AS id, A::foo AS foo, B::bar AS bar;
    

    【讨论】:

    • 您可以在不知道位置的情况下使用生成语句(事实上,我不建议使用位置,因为如果您在上游更改一行,您的代码将不会健壮)。例如,C = FOREACH AB GENERATE A::id AS id, A::foo AS foo, B::bar AS bar;
    • @savagedata 很高兴知道。我会用它来更新答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多