2017-07-26 52 views

回答

1

不,但您可以批处理API调用以获得更好的性能。在this博客文章中查看“批量RPC”示例。

要注意的另一件事是梁不能保证一次 - 外部API调用。如果所讨论的流水线需要完全一次QoS,则应努力使API调用具有幂等性。

+0

感谢您对批量RPC的建议。 –

1

这取决于API调用和类型你的数据的大小。如果数据指定需要进行的API调用,则这是适当的。但是,如果您有一些用于丰富输入元素的有限数据,则可以使用Beam编程模型的某些部分来减少所需的外部呼叫数量。例如,如果可以预加载生成API调用结果的数据,则可以通过读取所有数据并使用View.asMap(或任何适合的视图)来使用侧面输入,从而减少API调用的时间数量为每次执行一些相对恒定的数量。然后可以通过使用ParDo.withSideInputs来消耗侧面输入;请参阅programming guide,特别是关于ParDoSideInputs

+0

非常感谢Thomas的详细回复。我还可以问一下,根据Apache Beam编程模型进行这种API调用是否是反模式? –

+1

它高度依赖于您的数据和外部API;它的适当程度取决于访问模式,外部服务的可用性以及其他上下文元素。在某些情况下可能不合适,但我不会将其称为反模式。 –

+0

谢谢托马斯! –