2014-10-01 43 views
0

我在Hadoop 1.2.1上使用Pig 0.13.0。爲了處理JSON文件,我還使用了4.5的ElephantBird UDF版本。到現在爲止,我沒有與UDF的一個大問題,但是當我試圖通過一個JSON場命令別名,豬編譯器是不是很高興,我得到了以下錯誤:ElephantBird UDF:在json字段上的ORDER BY生成語法錯誤

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; 
... 

我試過刪除(長)但無濟於事。

回答

1

您無法通過JsonLoader返回的地圖中的值對您的記錄進行排序,或者在order by中進行類型轉換。您可以做的是將json#'imp'的值投影到您記錄中的字段中,然後按以下順序排列:

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