Выход STORE в один CSV?

В настоящее время, когда я STORE в HDFS, он создает много файлов деталей.

Можно ли сохранить один CSV файл?

Ответы

Ответ 1

Вы можете сделать это несколькими способами:

  • Чтобы установить количество редукторов для всех операций Pig, вы можете использовать свойство default_parallel, но это означает, что каждый отдельный шаг будет использовать один редуктор, уменьшая пропускную способность:

    set default_parallel 1;

  • До вызова STORE, если одна из выполняемых операций (COGROUP, CROSS, DISTINCT, GROUP, JOIN (внутренняя), JOIN (внешняя) и ORDER BY), вы можете использовать PARALLEL 1 чтобы обозначить использование одного редуктора для выполнения этой команды:

    GROUP a BY grp PARALLEL 1;

Подробнее см. Поваренную книгу свиней - Параллельные функции.

Ответ 2

Вы также можете использовать команду Hadoop getmerge для объединения всех этих файлов part *. Это возможно только в том случае, если вы запускаете скрипты Pig из оболочки Pig (а не из Java).

Это как преимущество перед предлагаемым решением: поскольку вы все еще можете использовать несколько редукторов для обработки ваших данных, ваша работа может работать быстрее, особенно если каждый редуктор выводит несколько данных.

grunt> fs -getmerge  <Pig output file> <local file>