Я пытаюсь построить конвейер, который читает из большого файла 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()
...;