2017-04-10 18 views
0

私は現在、実行時に複数の大きなクエリテーブルに書き込むGoogleのデータフローパイプラインを構築しています。私が現在直面している問題は、大きなクエリサービスインスタンス、テーブル情報などのリソースを再利用する必要があることです(毎回それらのリソースを再作成したくない)が、私はそれらをキャッシュすることができません効率的な方法。GoogleのデータフローWindows間でリソースを共有

現在、私は単純なファクトリを使用してキャッシュしています(静的同時ハッシュマップを使用しています)。パイプラインはそれらをキャッシュから選択するようには見えません(実際には数回は行いますが、ほとんどが再作成されます)。

固定サイズのセッションウィンドウではうまくいくことがわかりましたが、存在する場合はもっと簡単な解決策が必要です。

したがって、私が直面している現在の問題に対するベストプラクティスまたは解決策はありますか? ウィンドウ間でリソースを共有する方法はありますか?

+0

あなたは何を求めているのですか?あなたのコードを共有していただけますか? –

+0

@GrahamPolley私たちは独自のストリーミングのbigqueryライターを作成しなければなりませんでした。この作家は、かなりの起動コストがあります。オーバーヘッドを減らすために、ウィンドウ間でライターの側面をキャッシュしたいと思っています。 – NPSF3000

+0

@GrahamPolley私は詳しく説明します。現在、私は実行中に作成される私の大きなクエリテーブルであるIDフィールドを持つ数千万のレコードを持っています(それらの中で一意のIDは約300万です)。だから私はそれらのテーブルの情報を照会するたびに、私はそれらをキャッシュして、私はより少ないAPIコールオーバーヘッドを持っているだろう。 私の質問は、これらのリソースをデータフローパイプラインウィンドウで共有できるようにする方法です。現在、キャッシュからそれらの情報を引き出すことはなく、再作成しています(これらのリソースを別々のウィンドウで共有します)。 –

答えて

0

実際に私は結果を逆転させるためのロギング情報を間違って配置しました。しかし、Static Factoryがパイプラインの仕事とは別のソリューションは、リソース共有の問題を解決するようです。これはもっと似たような問題を抱えている人に役立つといいと思います:)

関連する問題