如何使用Pig将分组记录存储到多个文件中?

时间:2012-02-16 15:52:52

标签: java hadoop apache-pig

加载和分组记录后,如何将这些分组记录存储到多个文件中,每组一个(= userid)?

records = LOAD 'input' AS (userid:int, ...);
grouped_records = GROUP records BY userid;

我正在使用Apache Pig版本0.8.1-cdh3u3(rexported)

2 个答案:

答案 0 :(得分:8)

确实,MultiStorage上有一个Piggybank类,它正是我想要的 - 它按照指定的属性(在我的例子中为索引'0')分割记录:

STORE records INTO 'output' USING org.apache.pig.piggybank.storage.MultiStorage('output', '0', 'none', ',');

答案 1 :(得分:4)

 A = LOAD 'mydata' USING PigStorage() as (a, b, c);  
 STORE A INTO '/my/home/output' USING MultiStorage('/my/home/output','0', 'bz2', '\\t');

参数:

  1. parentPathStr - 父输出目录路径
  2. splitFieldIndex - 关键字段索引
  3. 压缩 - ' bz2',' bz',' gz'或者'没有'
  4. fieldDel - 输出记录字段分隔符。
  5. 参考:GrepCode