Pig 是否使用新的 DUMP 语句重新运行以前的语句?
Does Pig rerun previous statements with a new DUMP statement?
假设我在 Pig G运行t 中一次 运行 以下语句:
A = LOAD 'data' USING PigStorage(',') AS (a1:int, a2:int, a3:float);
B = FOREACH A GENERATE a1+a2 AS b1, a3 AS b2;
DUMP B;
C = FOREACH B GENERATE b1*b2 AS c1;
DUMP C;
当我执行DUMP C
时,它是只执行新语句还是会执行所有3条语句?
dump主要是看你的PIG脚本产生了什么结果,你可以用它来调试你的脚本。
在执行脚本时,它会搜索提到的直接别名,在您的例子中是 'C'。别名的使用被回溯并且执行从父级本身开始。
这里首先是A,然后是B,最后是C,然后你就可以看到结果了。因此,要获得别名 C 的结果,它需要检查别名 B,为此它首先需要别名 A,因此执行继续进行,'Dump B' 不会被执行,因为它不会更改或更改别名 B以任何方式(它只是发布别名 B 的结果。)
假设我在 Pig G运行t 中一次 运行 以下语句:
A = LOAD 'data' USING PigStorage(',') AS (a1:int, a2:int, a3:float);
B = FOREACH A GENERATE a1+a2 AS b1, a3 AS b2;
DUMP B;
C = FOREACH B GENERATE b1*b2 AS c1;
DUMP C;
当我执行DUMP C
时,它是只执行新语句还是会执行所有3条语句?
dump主要是看你的PIG脚本产生了什么结果,你可以用它来调试你的脚本。
在执行脚本时,它会搜索提到的直接别名,在您的例子中是 'C'。别名的使用被回溯并且执行从父级本身开始。
这里首先是A,然后是B,最后是C,然后你就可以看到结果了。因此,要获得别名 C 的结果,它需要检查别名 B,为此它首先需要别名 A,因此执行继续进行,'Dump B' 不会被执行,因为它不会更改或更改别名 B以任何方式(它只是发布别名 B 的结果。)