我在Hadoop 1.2.1上使用Pig 0.13.0。为了处理JSON文件,我也使用了ElephantBird UDF 4.5版。到目前为止我没有UDF的大问题但是当我试图通过json字段命令别名时,猪编译器不是很高兴,我得到以下错误:
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;
...
我尝试删除(长期),但无济于事。
答案 0 :(得分:1)
您无法按JsonLoader
返回的地图中的值订购记录,也无法在order by
中进行类型转换。您可以做的是将json#'imp'
的值投射到记录中的字段然后按以下顺序排序:
records = FOREACH records GENERATE json, (long)json#'imp' AS imp:long;
sortedrecords = ORDER records BY imp desc;