Hadoop Pig-如何一步连接和定义模式

Hadoop Pig-如何一步连接和定义模式,hadoop,apache-pig,bigdata,cloudera,Hadoop,Apache Pig,Bigdata,Cloudera,我采取以下措施: 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::ba

我采取以下措施:

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
;
如何在一个步骤中加入并定义架构?

根据连接关系时不能定义架构。
注: 从语法上讲,您可以嵌套命令,让人感觉您保存了一些步骤,如:

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;
但我会避免这样做。它是混乱的,但它生成的解释计划与原始计划相同。

根据规则,在连接关系时不能定义模式。
注: 从语法上讲,您可以嵌套命令,让人感觉您保存了一些步骤,如:

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;
但我会避免这样做。它是混乱的,但它生成的解释计划与原始计划相同。

根据规则,在连接关系时不能定义模式。
注: 从语法上讲,您可以嵌套命令,让人感觉您保存了一些步骤,如:

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;
但我会避免这样做。它是混乱的,但它生成的解释计划与原始计划相同。

根据规则,在连接关系时不能定义模式。
注: 从语法上讲,您可以嵌套命令,让人感觉您保存了一些步骤,如:

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;
但我会避免这样做。它是混乱的,尽管如此,它还是产生了与原始计划相同的解释计划