Apache Beam пишет много файлов после GroupByKey - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь построить конвейер, который читает из большого файла csv, который имеет 2 столбца (member, desc). CSV "многие ко многим" содержит миллионы членов.

Мой конвейер должен написать одну строку для каждого члена в BigQuery в соответствии со строками desc, которые есть у члена.

Я использую GroupByKey для группировки всех значений desc для каждого члена и использую BigQueryIO для записи данных в мою таблицу.

Проблема в том, что Beam создает файл для каждого участника, поэтому он создает миллионы крошечных файлов для каждого участника. Как я могу собрать группу по результатам для записи больших файлов?

Мой код:

p.apply("ReadLines", TextIO.read().from(options.getInputFile()))
  .apply(ParDo.of(new ExtractRowsFn())) //parse csv rows
  .apply(GroupByKey.<String, String>create())
  .apply(BigQueryIO.<KV<String, Iterable<String>>>write()
  ...;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...