Dataflowでは複数のマシンを並列に使用してデータ分析を行うため、マシンごとに少なくとも1回はAPIを初期化する必要があります。
実際、Dataflowではこれらのマシンの寿命が保証されていないため、比較的頻繁にアクセスしたり移動したりする可能性があります。
簡単な方法あなたの仕事へのアクセス外部サービスを持って、あまりにも多くのAPIは、あなたのDoFnでそれを初期化する初期化を回避するために:あなたはビームやデータフローは、時間を保証するため、これを実行する必要があり
class APICallingDoFn extends DoFn {
private ExternalServiceHandle handle = null;
@Setup
public void initializeExternalAPI() {
// ...
}
@ProcessElement
public void processElement(ProcessContext c) {
// ... process each element -- setup will have been called
}
}
DoFnインスタンス、またはワーカーに割り当てられます。
これが役に立ちます。
私にとって、APIは1台のマシンで複数回初期化されています。しかし、私は '' @ Setup'''を使っていません。 – sag
このAPIは、DoFnインスタンスごとに1回初期化されます。前述のように、DataFlowはDoFnインスタンスの寿命を保証しません。 – Pablo