使用Pig .12。
我想使用带有块语句的FOREACH;结果,通过GENERATE取决于某些价值。我知道我可以使用Flatten中的声明。即:
grunt> d = foreach j2 {
ord = order j1 by A::a1 desc;
l = limit ord 1;
generate flatten((IsEmpty(l)?'f':'g')); };
这很有效。
但我想做的是:
grunt> d = foreach j2 {
ord = order j1 by A::a1 desc;
l = limit ord 1;
generate flatten((l.$0=='2') ?'f':'g'); };
2014-05-07 22:28:08,750 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200:不匹配的输入'?' 期待RIGHT_PAREN
为什么会这样说?
我试过了:
grunt> d = foreach j2 {
ord = order j1 by A::a1 desc;
l = limit ord 1;
generate flatten(((l.$0=='2') ?'f':'g')); };
2014-05-07 22:40:44,895 [主要]错误 org.apache.pig.tools.grunt.Grunt - ERROR 1039: (名称:等于类型:null Uid:null) Equal Operator左侧不兼容的类型:bag:tuple(A :: a1:chararray)右侧:chararray
我不知道如何解决这个问题。
我只是想在测试用例中生成我的结果,但首先需要压缩测试条件。 救命 ? 谢谢, 马特