从至少 pig 0.9.1 开始,您可以使用星型表达式或项目范围表达式从元组中选择多个字段。阅读Pig Latin 0.15.0,表达式章节了解详细信息。
这是我的示例,只是为了让您理解。
-- A: {id: long, f1: int, f2: int, f3: int, f4: int}
-- B: {id: long, f5: int}
让我们加入 A & B 并只选择 A 的字段
AB = FOREACH (JOIN A BY id, B by id) GENERATE $0..$4;
--AB: {A::id: long, A::f1: int, A::f2: int, A::f3: int, A::f4: int}
或者
BA = FOREACH (JOIN B BY id, A by id) GENERATE $2..;
--BA: {A::id: long, A::f1: int, A::f2: int, A::f3: int, A::f4: int}
使用星形表达式选择所有字段
AB = FOREACH (JOIN A BY id, B by id) GENERATE *;
--AB: {A::id: long, A::f1: int, A::f2: int, A::f3: int, A::f4: int, B::id: long, B::f5: int}
使用 Project-range 表达式选择所有不同的字段(没有 B::id 字段)
AB = FOREACH (JOIN A BY id, B by id) GENERATE $0..$4, f5;
--AB: {A::id: long, A::f1: int, A::f2: int, A::f3: int, A::f4: int, B::f5: int}
有时,当您在一个关系中有数十个字段而在另一个关系中只有几个字段时,它真的很有用。