pig中的stitch函数

dldeef67  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(247)

以下清管器代码不起作用:

grunt> Register /usr/lib/pig/lib/piggybank.jar ;                  
grunt> define Stitch org.apache.pig.piggybank.evaluation.Stitch();
grunt> data = load 'a' using PigStorage('|') ;                    
grunt> B = Stitch(data,data);

error:-

2015-01-06 12:03:57,730 [main] ERROR org.apache.pig.tools.grunt.Grunt - 
ERROR 1200: <line 12> Cannot expand macro 'Stitch'. 
Reason: Macro must be defined before expansion.
Details at logfile: /home/hduser/nikhil/pig_1420524859398.log

有人能解释一下这里出了什么问题吗。

lbsnaicq

lbsnaicq1#

代码中有两个问题
1不能直接分配 stitch 命令任何关系。它应该作为 FOREACH stmt公司。
2 Stitch 命令将采取 only bags 作为输入参数,但传递的是整个关系。
你能修复以上两个问题并重试你的脚本吗。
示例:
输入:

{(a,b),(e,f)}   {(c,d),(g,h)}

Pig手稿:

grunt> REGISTER /tmp/piggybank.jar;
grunt> DEFINE MyStitch org.apache.pig.piggybank.evaluation.Stitch;
grunt> A = LOAD 'input' USING PigStorage() AS (B1:{T:(t1:chararray,t2:chararray)},B2:{T1:(t3:chararray,t4:chararray)});
grunt> B = FOREACH A GENERATE MyStitch(B1,B2);
grunt> DUMP B;

输出:

({(a,b,c,d),(e,f,g,h)})

参考文献:
http://pig.apache.org/docs/r0.13.0/api/org/apache/pig/piggybank/evaluation/stitch.html

相关问题