如何使用 Pig 将分组记录存储到多个文件中?
Posted
技术标签:
【中文标题】如何使用 Pig 将分组记录存储到多个文件中?【英文标题】:How to store grouped records into multiple files with Pig? 【发布时间】:2012-02-16 15:52:51 【问题描述】:加载和分组记录后,如何将这些分组记录存储到多个文件中,每组一个 (=userid)?
records = LOAD 'input' AS (userid:int, ...);
grouped_records = GROUP records BY userid;
我正在使用 Apache Pig 版本 0.8.1-cdh3u3(重新导出)
【问题讨论】:
嗯,Piggybank 中的 MultiStorage 似乎是我正在寻找的 (?)svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/main/… 【参考方案1】:确实,Piggybank 处有一个 MultiStorage 类,它完全符合我的要求 - 它按指定属性(在我的示例中位于索引“0”处)分割记录:
STORE records INTO 'output' USING org.apache.pig.piggybank.storage.MultiStorage('output', '0', 'none', ',');
【讨论】:
你知道如何做同样的事情,但我不想指定压缩格式,而是想以 RC 格式存储我的文件? 对不起 Emtiaz,我不知道。【参考方案2】: A = LOAD 'mydata' USING PigStorage() as (a, b, c);
STORE A INTO '/my/home/output' USING MultiStorage('/my/home/output','0', 'bz2', '\\t');
参数:
-
parentPathStr - 父输出目录路径
splitFieldIndex - 关键字段索引
压缩 - 'bz2'、'bz'、'gz' 或 'none'
fieldDel - 输出记录字段分隔符。
参考:GrepCode
【讨论】:
以上是关于如何使用 Pig 将分组记录存储到多个文件中?的主要内容,如果未能解决你的问题,请参考以下文章
如何读取 CSV 并生成 json/avro 文件,其中 pig 按第一列的值分组?