以下PIG代码无效:
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);
Run Code Online (Sandbox Code Playgroud)
错误:-
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
Run Code Online (Sandbox Code Playgroud)
有人可以解释这里出了什么问题.
您的代码中存在两个问题
1.您无法直接将stitch命令输出分配给任何关系.它应该作为FOREACH stmt的一部分进行预测.
2. Stitch命令将only bags作为输入参数,但您传递的是整个关系.
你能修复上面两个问题并重试你的脚本吗?
示例示例:
输入:
{(a,b),(e,f)} {(c,d),(g,h)}
Run Code Online (Sandbox Code Playgroud)
PigScript:
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;
Run Code Online (Sandbox Code Playgroud)
输出:
({(a,b,c,d),(e,f,g,h)})
Run Code Online (Sandbox Code Playgroud)
参考:http :
//pig.apache.org/docs/r0.13.0/api/org/apache/pig/piggybank/evaluation/Stitch.html
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |