Как хранить сгруппированные записи в нескольких файлах с помощью Pig?

После загрузки и группировки записей, как я могу сохранить эти сгруппированные записи в несколько файлов, по одному на группу (=userid)?

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

Я использую Apache Pig версии 0.8.1-cdh3u3 (реэкспортировано)


person thomers    schedule 16.02.2012    source источник
comment
Хм, кажется, MultiStorage в Piggybank может быть тем, что я ищу (?) svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/main/   -  person thomers    schedule 16.02.2012


Ответы (2)


 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 — разделитель полей выходной записи.

Ссылка: GrepCode

person Abhi    schedule 15.05.2015

Действительно, существует MultiStorage в Piggybank который делает именно то, что я хочу - он разбивает записи по указанному атрибуту (в моем примере с индексом '0'):

STORE records INTO 'output' USING org.apache.pig.piggybank.storage.MultiStorage('output', '0', 'none', ',');
person thomers    schedule 17.02.2012
comment
Знаете ли вы, как сделать то же самое, но вместо указания формата сжатия я хочу хранить свои файлы в формате RC? - person Emtiaz; 08.01.2014
comment
Прости, Эмтиаз, я не знаю. - person thomers; 09.01.2014