【问题标题】:Why do a Beam io need beam.AddFixedKey+beam.GroupByKey to work properly?为什么 Beam io 需要 beam.AddFixedKey+beam.GroupByKey 才能正常工作?
【发布时间】:2021-06-01 22:43:30
【问题描述】:

我正在为 Golang 中的 Elasticsearch 开发 Beam IO,目前我有一个工作草稿版本,但只能通过做一些我不清楚为什么需要它的事情来使其工作。 基本上我查看了现有的 IO,发现只有添加以下内容才能写入:

x := beam.AddFixedKey(s, pColl)
y := beam.GroupByKey(s, x)

一个完整的例子在existing BigQuery IO

基本上我想了解为什么我需要 AddFixedKey 和 GroupByKey 才能使其工作。还检查了问题 BEAM-3860,但没有更多详细信息。

【问题讨论】:

    标签: go elasticsearch apache-beam apache-beam-io


    【解决方案1】:

    这两个转换本质上是一种将 PCollection 中的所有元素分组到一个列表中的方式。例如,它在您发布的 BigQuery 示例中的用法允许将整个输入 PCollection 分组到一个列表中,该列表在 ProcessElement method 中进行迭代。

    是否使用这种方法取决于您如何实现 IO。一旦所有元素都可用,您发布的 BigQuery 示例将作为批处理执行写入,但这可能不是您的用例的最佳方法。您可能更喜欢在元素进入时一次写入一个,特别是如果您可以在不同工作人员之间并行写入。在这种情况下,您可能希望避免将输入 PCollection 组合在一起。

    【讨论】:

    • 嗨@Daniel Oliveira,这是有道理的,谢谢!
    猜你喜欢
    • 2020-05-04
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2016-12-08
    相关资源
    最近更新 更多