2016-07-01 7 views
2

今朝、ローリングウィンドウのKey-Valueストアを実装するため、ktablesについて読んでいます。私はカフカの最新リリースがこれが可能であることを示唆しているように見えますが、私は「外部」アプリケーションからキーバリューデータにアクセスすることについてもっと疑問に思っています。kafka ktable - java経由でのアクセス

私はkstreamsアプリケーションを実装しているとし、トピックからログデータ(またはそれはilk)を消費し、気晴らしにウィンドウ処理、集約して別のトピックに生成するとします。ここでは、このキー値データを他のプロセスから見てみたいと思います。ドキュメントは、データがrocksdbによって格納されることを示唆しています。私はdbの呼び出しとして 'outside'からこれを読むことができますか?または、このデータは、kstreamsアプリケーションの仮想構造としてのみ利用可能ですか?

+1

メモ新しく改良されたドキュメントはhttp://docs.confluent.io/3.0.0/streams/にあります(2.1アルファドキュメントにリンクしています) –

答えて

3

RocksDBStoreは、JavaからRocksDBストアにアクセスする方法を示しています。基本的には:

RocksDB db = RocksDB.open(options, dir.getAbsolutePath()); 

、その後することができますget()put()remove()。 KafkaStreamsがRocksDBの状態を格納する場所を設定することができます。基本的には、KafkaStreams以外のストアで作業するために知っておく必要があります。

ウィンドウに関しては、ウィンドウの構成方法によっては、Segmentと呼ばれる複数のRocksDBStoreが作成されます。上記のように、これらの店舗のそれぞれにアクセスすることができます。

4

現在のところ、組み込みサポートはありませんが、内部状態(つまり、KTable状態)を公開してクエリ可能にする計画があります。詳細はKIP-67を参照してください。

また、KTable状態はフォールトトレランスのためにカフカのトピックに書き込まれます。したがって、このトピックを消費して、外部データベースにデータを供給することもできます。

+0

これは他の回答と矛盾するようです。 – ethrbunny

+1

。あんまり。もう1つの答えは、何らかの余分な内部知識を必要とする手作業の(すなわち、組み込みのない)解決策を記述しています。 Btw:RocksDBからのみデータを取得することを強くお勧めします。置くか取り除くと、あなたの内部オペレータの状態が乱れることがあります。 –

+0

ありがとうございましたKIP-67について知りませんでした。 –

関連する問題