elephantbird udf:order-by在json字段上生成语法错误

ckocjqey  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(386)

我在hadoop1.2.1上使用pig0.13.0。为了处理json文件,我还使用了elephantbird 4.5的udf版本。到目前为止,我对udf没有太大的问题,但当我尝试按json字段排序别名时,pig编译器并不满意,我得到了以下错误:

Failed to parse: <file find.pig, line 13, column 35>  Syntax error, unexpected symbol at or near 'long'

脚本如下所示(请看order语句):

...
records = LOAD '$INPUT' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS (json:map[]);
sorted_records = ORDER records BY (long)json#'imp' desc;
...

我试着去掉(长的),但没有用。

yv5phkfx

yv5phkfx1#

您不能根据 JsonLoader 或者在 order by . 你所能做的就是预测 json#'imp' 到记录中的字段,然后按以下方式排序:

records = FOREACH records GENERATE json, (long)json#'imp' AS imp:long;
sortedrecords = ORDER records BY imp desc;

相关问题