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