【发布时间】:2017-07-26 05:20:06
【问题描述】:
在使用 Apache Beam 丰富数据时,对每个数据项进行 API 调用会不会出错
(我是 Apache Beam 新手)
【问题讨论】:
标签: apache-beam
在使用 Apache Beam 丰富数据时,对每个数据项进行 API 调用会不会出错
(我是 Apache Beam 新手)
【问题讨论】:
标签: apache-beam
不可以,但您可以批处理 API 调用以获得更好的性能。查看 this 博文中的“批处理 RPC”示例。
另外需要注意的是,Beam 不能保证外部 API 调用只发生一次。如果有问题的管道需要完全一次性的 QoS,您应该努力使 API 调用具有幂等性。
【讨论】:
batchElements()转换有什么区别?
这取决于 API 调用的类型和数据的大小。如果数据指定了需要进行的 API 调用,这是合适的。但是,如果您有一些有限的数据集用于丰富您的输入元素,则可以使用部分 Beam 编程模型来减少所需的外部调用次数。
例如,如果可以预加载生成 API 调用结果的数据,则可以通过读取所有数据并使用 View.asMap(或任何合适的视图)来使用侧面输入,将每次执行的 API 调用次数减少到某个相对恒定的次数。然后可以使用ParDo.withSideInputs 来使用侧面输入;参见programming guide,特别是关于ParDo 和SideInputs
【讨论】: