如何在Pig中放置一个测试语句?

时间:2014-05-08 03:47:44

标签: foreach apache-pig flatten

使用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

我不知道如何解决这个问题。

我只是想在测试用例中生成我的结果,但首先需要压缩测试条件。 救命 ? 谢谢, 马特

0 个答案:

没有答案