2017-07-26 32 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

謝謝托馬斯! –