Pig - 如何一步加入和定义模式

Posted

技术标签:

【中文标题】Pig - 如何一步加入和定义模式【英文标题】:Pig - How to Join and Define Schema in One Step 【发布时间】:2014-04-15 09:53:43 【问题描述】:

我采取以下措施:

A = LOAD 'a.txt' USING PigStorage('\\u001') AS (
    foo:int
    ,bar:chararray
);
B = LOAD 'b.txt' USING PigStorage('\\u001') AS (
    foo:int
    ,baz:long
);
C = JOIN A BY foo, B BY foo;
D = FOREACH C GENERATE
    A::foo AS foo
    ,A::bar AS bar
    ,B::baz AS baz
;

如何在一个步骤中加入和定义架构?

【问题讨论】:

【参考方案1】:

根据documentation,您在加入关系时无法定义架构。 笔记: 从语法上讲,您可以嵌套命令以使您感觉节省了一些步骤,例如:

D = foreach
    (join (LOAD 'a.txt' USING PigStorage('\\u001') AS (foo:int ,bar:chararray)) by foo,
          (LOAD 'b.txt' USING PigStorage('\\u001') AS (foo:int ,baz:long)) by foo
    ) generate $0 as foo, $1 as bar, $3 as baz;

但我会避免这样做。它很混乱,但它生成的解释计划与原始计划相同。

【讨论】:

以上是关于Pig - 如何一步加入和定义模式的主要内容,如果未能解决你的问题,请参考以下文章

在 PIG 中声明变量和模式

Pig:使用 .pig_schema 模式文件加载数据

java设计模式(模板方法模式)

如何在 PIG 中为无分隔符文件创建模式?

Pig 在本地模式与 mapreduce 模式下的性能

PIG 自动与默认 HDFS 连接,如何?