2

私は、単一のパイプラインを使用して実行しようとしている単純なParDo変換を適用した後、BigQueryの複数のテーブルに書き込む必要があるGoogleストレージ内に、ですから、基本的には、1つのデータフロージョブで1つのパイプラインで複数の並列接続されていないソースとシンクが実行されています。 Pardo変換では、評価すると、他のBigQueryテーブルへの書き込み(他の変換)がいつものように続き、特定のBigQueryテーブル(変換)への書き込みを停止する必要があるという条件があります。 enter image description here他のパイプライン変換の実行中にパイプライン変換の実行を停止する

この画像には、2つの並列ソースと2つの並列シンクがあります.2014-08-01の日付のソースにいくつかの不良データがあるため、最初の変換に失敗しました。 2014-08-01の変換に失敗すると、2014-08-02の変換がキャンセルされました。 2014-08-02変換には悪いデータはありませんでした。

他のトランスフォームのキャンセルを防ぐ方法はありますか?

+0

「停止」とはどういう意味ですか?何も書かれていないか、すでに書かれた要素のすべてが書かれていなければなりませんか?また、どのような状態ですか?それは時間に基づいていますか?要素のプロパティ? ParDoが多くのマシンで処理されていた場合、この停止信号が受信されたことをすべて確認できますか?停止信号がより早いタイムスタンプ(遅いデータ)で受信された後に要素が到着した場合、それは放出されるべきですか? –

+0

特定のトランスフォームが停止すると、そのトランスフォームのシンクに何も書き込まれず、他のトランスフォームが実行を継続します。 条件は要素のプロパティに基づいています。私は今質問の詳細を説明します。 –

答えて

2

現在、データフローサービスでは、パイプライン全体が成功または失敗し、失敗すると残りのパイプラインがキャンセルされます。この動作を変更する方法はありません。別々に成功または失敗させたい場合は、別々のパイプラインを実行する必要があります。

操作上、両方のパイプラインを同じJavaメインプログラムから実行できます。 2つの異なるPipelineオブジェクトを作成し、それらに対して個別にrun()を呼び出します。

関連する問題