2015-10-07 28 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', ',');