2014-01-12 40 views
1

我有下面的數據需要使用豬豬默認JsonLoader架構問題

數據

{ 
    "Name": "BBQ Chicken", 
    "Sizes": [ 
     { "Size": "Large", "Price": 14.99 }, 
     { "Size": "Medium", "Price": 12.99 } 
    ], 
    "Toppings": [ "Barbecue Sauce", "Chicken", "Cheese" ] 
} 

我能夠定義架構NameSizes解析,但我不能」 t得到Toppings工作。在這裏尋找幫助。

腳本

data = LOAD '/user/hue/data/nested_json_pizza_sample_data.json' 
     USING JsonLoader('Name:chararray, 
         Sizes:bag{tuple(Size:chararray, Price:float)}, 
         Toppings:tuple(a:chararray)'); 
DUMP data; 

輸出

正如你可以看到下面,打頂的數據不被解析。

(BBQ Chicken,{(Large,14.99),(Medium,12.99)},) 
(Hawaiian,{(Large,12.99),(Medium,10.99)},) 
(Vegetable,{(Large,12.99),(Medium,10.99)},) 
(Pepperoni,{(Large,12.99),(Medium,10.99),(Small,7.49)},) 
(Cheese,{(Large,10.99),(Medium,9.99),(Small,5.49)},) 
data: {Name: chararray,Sizes: {(Size: chararray,Price: float)},Toppings: (a: chararray)} 

回答

2

這裏有兩個選擇:如果數組中的項數在未知。

Toppings:{t:(i:chararray)} 

或者如果元素的數量總是相同的。

Toppings: (i: chararray, j: chararray, k: chararray) 

會給你的輸出:

(BBQ Chicken,{(Large,14.99),(Medium,12.99)},) 
+0

我試過澆頭:{t:(一:chararray)},但輸出是一樣的我在原來的職位已經證明。由於配料不固定,我不能使用第二個選項,但我也嘗試過,輸出也是一樣的。 –

+0

這很奇怪,因爲我在本地嘗試了它,並且得到了我在答案 –

+0

中給出的輸出結果,請問您可以分享您使用的是哪種版本的豬,還可以從咕嚕聲中運行它嗎?你在使用Cloudera或Hortonworks的沙箱嗎?我遇到的問題是Hortonworks沙箱2. –