2016-07-27 88 views
0

我有豬的問題,是關係到包轉換爲列,具體情況如下:阿帕奇豬:將袋子轉換爲柱子。

(267720, {(201607),(201606),(201605)}, {(1),(3),(0)}) 
(806571, {(201607),(201606),(201605)}, {(28),(76),(75)}) 

我想將其轉換爲:

266720 201607 1 
266720 201606 3 
266720 201605 0 
806571 201607 28 
806571 201606 76 
806571 201605 75 

我想:

JG3 = FOREACH JG2 GENERATE company_id, flatten(date) as date, Flatten(new_hire) as newhire; 

但是無法實現日期和newhire之間的完全匹配,會有重複的日期。

有誰知道我該如何在豬身上做這件事?提前致謝!

回答

0

您正在做的事情會創建日期和new_hire列的笛卡爾乘積。如果您可以控制這些數據 - 請在創建行李前進行此映射。如果沒有,那麼你必須寫udf來生成這個一對一的映射。

+0

謝謝!我是Pig的新手,之前從未使用過UDF,你能否提供更多關於我應該創建什麼樣的UDF的詳細信息? – Jiarong

0

使用ToBag()

JG3 = FOREACH JG2 GENERATE company_id, FLATTEN(TOBAG($1)), FLATTEN(TOBAG($2));