2015-10-07 48 views
0

衍生的目錄結構,我想實現以下目標:商店豬作業的輸出到來自數據

我輸入的數據如下所示

{"metadata": 
{ 
"producerName":"capture_api", 
"producerVersion":"3.0.13" 
}, 
"payload": 
{ 
--some payload 
} 
} 

我想用一個來鬥這個數據豬腳本如下

/finalOutputDir/producerName/producerVersion/File.txt 

有沒有辦法可以做到這一點。我曾嘗試使用MultiStorage函數,但該類僅支持一個字段。我可以覆蓋多級中的功能,但只是想檢查是否有更簡單的選項。

+0

所以我如下解決了這個問題:rawJsonData = LOAD '數據' USING com.twitter.elephantbird.pig.load.JsonLoader( ' - nestedLoad'); namedJsonData = FOREACH rawJsonData GENERATE CONCAT($ 0#'metadata'#'producerName',CONCAT('/',$ 0#'metadata'#'producerVersion')),$ 0#'payload'; STORE namedJsonData INTO'finalOutputDir'USING MultiStorage('/ data/fridge/flume/rl.Q.data_event /','0','none',',');將像producerName/producerVersion這樣的列添加到數據中實際上是將其寫入目錄結構中 –

+0

您應該將解決方案放在下面的答案框中,而不是註釋中。 –

回答

0

piggybank MultiStorage可以通過(只有一個?)字段將數據分成多個文件夾。

STORE data INTO '$out/$producerName' USING org.apache.pig.piggybank.storage.MultiStorage('$out/$producerName', '0', 'none', ',');