我正在为Golang的Elasticsearch开发一个光束IO,目前我有一个正在工作的草案版本,但我只是通过做一些我不清楚为什么需要它的事情来设法让它工作。基本上,我查看了现有的IO,发现只有在添加以下内容时,写入才能正常工作:
x := beam.AddFixedKey(s, pColl)
y := beam.GroupByKey(s, x)在existing BigQuery IO中有一个完整的示例
基本上,我想知道为什么我需要两个AddFixedKey后跟一个GroupByKey才能使它工作。我也检查了BEAM-3860的问题,但没有更多的细节。
发布于 2021-06-04 09:07:17
这两个转换实质上是一种将PCollection中的所有元素组合到一个列表中的方法。例如,它在您发布的BigQuery示例中的使用允许将整个输入PCollection分组到一个在ProcessElement method中迭代的列表中。
是否使用此方法取决于您如何实现IO。一旦所有元素都可用,您发布的BigQuery示例将以批处理的形式执行写入,但对于您的用例来说,这可能不是最好的方法。您可能更喜欢在元素传入时一次写入一个元素,特别是如果您可以在不同的工作进程之间并行写入的话。在这种情况下,您可能希望避免将输入PCollection组合在一起。
https://stackoverflow.com/questions/67796876
复制相似问题