2012-03-01 224 views
1

我正在用Apache pig分析數據,並找不到擴展數組的方法(如果有項目)。 這是我的工作模式,並期望輸出的一個例子:用Apache Pig擴展數組

(col1:int, col2:int, items:{ARRAY_ELEM:(name:chararray, total:int)}) 
input = (1, 1, {("bird", 5), ("bear", 12), ("wolf", 10)}) 
output = (1, 1, "bird", 5, "bear", 12, "wolf", 10) 

有沒有辦法做到這一點的轉型?

感謝您的幫助!

回答

2

如果您現在需要進行此轉換,最簡單的方法可能是在Python或Java中執行UDF(我不知道任何內置解決方案)。

然而,大部分的時間,最好是保持相同數量列的每個記錄(例如保持你的陣列袋或元組和一個記錄不「扁平化」的話)。

1

退房this Python UDF I wrote for doing that(希望很快成爲Python PiggyBank的一部分)。您可以使用在你的行李,然後壓平他們得到想要的結果,例如,假設你的數據集稱爲胡說,你應該可以登記自己的函數,然後像做:

flattened_blah = FOREACH blah GENERATE item1, item2, FLATTEN(bagToTuple(item3)) AS item4, item5, item6, item7, item8, item9 

另外,我很確定LinkedIn's DataFu有一個這樣做的方法。如果您正在使用Pig並且尚未使用它,那麼您可能應該查看它。