我正在尝试建立一个从具有2列(成员,desc)的大型csv文件读取的管道。csv多对多包含数百万个成员。
我的管道应根据成员具有的desc行,为BigQuery的每个成员写一行。
我正在使用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()
...;