1

(実行中のパイプラインにソースまたはシンク(KafkaまたはPubSub)としてトピックを動的に追加または削除することは可能ですか?また、BigQueryのテーブル名で可能なように、シンクとしてダイナミックなパターンを持つこともできます。Beam/Cloud Dataflow:実行中のストリームにKafka(またはPubSub)トピックを追加する方法

背景:いくつかの背景:顧客ごとに1つずつ異なるトピックがあり、下流の集計を容易にし、その場でまとめてクリーンアップすることができます。 Kafkaは、PubSubで可能な期間よりも長い期間にわたって計算をバックフィルすることができるようにするために使用されます。

私が気にしているオプションは、これをサポートするためにKafkaIOを拡張したり、トピックが削除されたたびにパイプラインを更新したりすることです(更新中にストリームに遅れがあることを意味します)。あるいは私は頭の中に間違ったデザインパターンを持っているでしょう、そして、これのための他の解決策があります。

答えて

2

これは間違いありません。今すぐ簡単な解決策は、パイプラインを更新することです。

しかし、Splittable DoFn(SDF)と呼ばれる新しいAPIが現在開発中です。クラウドデータフローランナーでストリーミングモードとダイレクトランナーで既に使用可能で、FlinkおよびApexランナーで実装が進行中です。

「カフカのトピック名のPCollectionを作成し、それぞれのトピックを読む」というようなことができるので、1つのパイプラインステージで読み上げるトピックの名前を生成できます(例:名前自体が到着する可能性があります顧客を追加するたびにKafkaまたはPubsubを作成するか、または顧客のリストを返すデータベースクエリの結果を見て新しいものを発行するためのSDFを書くことができます)。

APIのデザインドキュメントについてはhttp://s.apache.org/splittable-do-fn、このAPIを使用したTextIOのリファクタリングの例についてはhttp://s.apache.org/textio-sdfを参照してください。同様の方法でKafkaIOを自分自身で修正してみてください。

+0

ありがとう、私は実行可能でなければならない提案をチェックアウトしました。私はそれを見るので、ワークフローの更新がなくても、UIでこれを新しいものとして表示する方法はありません。 (問題を引き起こす個々のトピックを検出するための監視目的) –

+0

質問を明確にすることはできますか? UIを使用して新しいトピックを手動で追加したいのですか、UIがトピックを見つけるのに役立つようにしたいのですか。これらは非常に異なる問題のようです。 – jkff

+0

申し訳ありませんが、明確にする:UIを介して追加しない。これは、各トピックのサブスクリプション/ライターを別々のステップ/トランスフォーム(つまり、UIで視覚化したときのボックス)に分ける機能を持つことです。その理由は、モニタリングやエラー分析が簡単で、バンドルを処理する際の個々のステップに渡ってDataFlowsリカバリとスケーリング機能の一部から利益を得ることを理解しているからです。しかし、これを書いてみると、実際にはAFAIKのようにパイプラインを適切に更新すれば、内部からグラフを動的に更新できることになります。 –

関連する問題