如何从kafka流到cassandra并增加计数器

时间:2017-10-11 10:05:57

标签: apache-spark cassandra apache-kafka apache-kafka-streams apache-kafka-connect

我有apache访问日志文件,我想在cassandra表中存储每个页面的访问计数(总/每日/每小时)。

我试图通过使用kafka connect从日志文件流到kafka主题来实现。为了增加Cassandra中的度量计数器,我可以再次使用Kafka Connect吗?否则,这里应该使用哪种其他工具,例如kafka溪流,火花,叮当声,卡夫卡连接等?

2 个答案:

答案 0 :(得分:3)

您正在谈论做流处理,Kafka可以这样做 - 使用Kafka's Streams APIKSQL。 KSQL运行在Kafka Streams之上,并为您提供了一种非常简单的方法来构建您正在讨论的聚合类型。

以下是在KSQL中进行数据流聚合的示例

SELECT PAGE_ID,COUNT(*) FROM PAGE_CLICKS WINDOW TUMBLING (SIZE 1 HOUR) GROUP BY PAGE_ID

详情请见:https://www.confluent.io/blog/using-ksql-to-analyse-query-and-transform-data-in-kafka

您可以获取KSQL的输出,这实际上只是一个Kafka主题,并通过Kafka Connect传输,例如到Elasticsearch,Cassandra等。

你提到其他流处理工具,它们也是有效的 - 部分取决于现有的技能和语言偏好(例如Kafka Streams是Java库,KSQL是...... KSQL,Spark Streaming有Python和Java等等) ),还有部署首选项。 Kafka Streams只是一个在现有应用程序中部署的Java库。 KSQL可以在集群中部署,依此类推。

答案 1 :(得分:0)

这可以通过Flink轻松完成,无论是批处理还是流媒体作业,无论是否有Kafka(Flink都可以读取文件并写入Cassandra)。使用Flink的SQL API可以轻松完成这种时间窗口聚合;请参阅examples here