我写了一个返回字符串的UDF,这是一个示例代码:
split data into purchased IF ((boolean) (myudf(param)), failed OTHERWISE;
举个例子,这是我的udf返回的例子:
split data into purchased IF ((boolean) (retcode == 'SUCCESS')), failed OTHERWISE;
不幸的是。我收到以下错误:
Apache Pig: ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: can't look backwards more than one token in this stream
我也试过这个:
split data into purchased IF ((boolean) '(retcode == 'SUCCESS')'), failed OTHERWISE;
我收到此错误:
2015-06-19 10:10:48,330 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 11, column 85> Syntax error, unexpected symbol at or near '250.00'
我也试过这个:
split data into purchased IF ((boolean) '(retcode == \'SUCCESS\')'), failed OTHERWISE;
我没有收到任何错误,但是我没有得到预期的结果。 任何帮助都会很棒。
答案 0 :(得分:0)
抛出该错误是因为ANTLR无法正确解析该句子。猪应该给你一个不同的错误,显示问题是什么,就像它通常那样,但似乎SPLIT
句子的解析规则没有考虑到你试图施放条件时会发生什么。
只需将演员表移至boolean
:
split data into purchased IF (retcode == 'SUCCESS'), failed OTHERWISE;
那会有效。
为什么演员会让它失败?我不知道。我想将表达式的输出转换为两个不同的表达式,因为它必须解析内部表达式以便随后应用强制转换,并且split
运算符的语法规则不允许这样做。 0%肯定。