我對HADOOP和豬很新。如何在加載大象鳥後查詢嵌套的json
所以。我有一個單行JSON文件,都有着相同的模式:
{"name":"someName","pkg":[{"F1":"abc","F2":"44","F3":"xyz","F4":1024,"info":
[{"timestamp":1372631550000,"value":"122","id":"nnn","name":"ppp"},
{"timestamp":1372649240000,"value":"222","id":"ggg","name":"qqq"}]} ,
{"F1":"abc","f2":"44","F3":"xyz","F4":1024,"new":[{"type":"event1", "time":1372537000000,"more":"
{\"bbad\":\"HELLO\",\"is_done\":0,\"ssss\":-128}"}]}]}
我使用elephantbird加載所有的JSON文件:
data = LOAD 'browsers/gzip' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') as (json:map[]);
迄今爲止唯一的事情,工作對我來說是查詢返回bytearray的「name」字段。
b = foreach data generate json#'name' as name
我然後嘗試將其轉換爲映射代替:
c = FOREACH data GENERATE json#'name' as (m:map[]);
DESCRIBE c;
並獲得
C:{tuple_0:(M:地圖[])}
和數據看起來像:
({([F1#「abc」,F2#44 ...]))
所以現在我需要過濾所有具有pkg.F1 =「abc」或所有具有pkg.info.value = 122等的那些。
我該怎麼做?
一個代碼示例將非常有用,因爲我已經使用了很多代碼。
謝謝
謝謝回答。 已經嘗試過在詢問這裏之前,沒有足夠的信息。 data:{json:map []} –