0

我在 Hadoop 1.2.1 上使用 Pig 0.13.0。为了处理 JSON 文件,我还使用了 ElephantBird UDF 版本 4.5。到目前为止,我对 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;
...

我尝试删除(长)但无济于事。

4

1 回答 1

1

您不能按 . 返回的映射中的值对记录进行排序,也不能JsonLoaderorder by. 您可以做的是将值投影json#'imp'到记录中的字段,然后按以下顺序排序:

records = FOREACH records GENERATE json, (long)json#'imp' AS imp:long;
sortedrecords = ORDER records BY imp desc;
于 2014-10-01T14:27:35.633 回答