2017-09-07 6 views
0

私は自分のサイトの各WebページのページビューをCassandraに書き出す簡単なアプリケーションを作成しようとしています。論理的な時間の始めから累積ページビューを5分ごとに書きたいと思います。私はまた私がCOMMIT_INTERVAL_MS_CONFIGプロパティを設定することにより、5分間隔をコミット設定私自身のCassandraドライバを使用して集計結果を書き込む

KTable<Windowed<String>, Long> hourlyPageViewsCounts = keyedPageViews 
      .groupByKey() 
      .count(TimeWindows.of(TimeUnit.MINUTES.toMillis(60)), "HourlyPageViewsAgg") 

このための私のコードは次のようになります。私の理解には、フルタイムで集計し、5分ごとに中間蓄積状態を出力する必要があります。

私の質問は今の2つです:私はカサンドラに凝集の5分の中間結果を書くのですか、私自身のカサンドラ・ドライバーを持っていることを考えると

  1. ? foreachを使用しようとしましたが、動作していないようです。

  2. 5分の集計後に書き込みが必要ですが、更新ごとには必要ありません。出来ますか? Reading hereは、低レベルのAPIを使用しないと、高レベルのAPIで達成するのに十分な単純なタスクのように思えるので、避けようとしていることを示唆しています。

答えて

1

出力のコミットと生成/出力は、Kafka Streams APIの2つの異なる概念です。 Kafka Streams APIでは、出力は連続的に生成され、コミットは「進捗をマークする」(つまり、すべてのストアとバッファされたプロデューサレコードのフラッシュを含むコンシューマオフセットをコミットするため)に使用されます。あなたはより多くの詳細については、このブログの記事をチェックアウトする場合があります

https://www.confluent.io/blog/watermarks-tables-event-time-dataflow-model/

1)Casandraに書き込むには、#to("topic-name")を経由して(バックトピックへのあなたのアプリケーションの結果を書き込み)して使用することをお勧めしますKafka Connect to get the data into Casandra

は比較:あなたはすでに指摘したようにあなたは、厳密な5分間隔を持つようにしたい場合は、低レベルのAPIを使用してExternal system queries during Kafka Stream processing

2))(行くための唯一の方法です。次のリリース(Kafka 1.0)にはウォールクロックの句読点が含まれているため、目標達成が容易になることに注意してください。

+0

こんにちは、コメントありがとうございます。私はKafka接続を使用していましたが、いくつかの監視(カウント、タイマー)が必要です。私の理解のために、それを達成するために私自身のコネクタを作成する必要があります。 – idoda

関連する問題