我有apache访问日志文件,我想在cassandra表中存储每个页面的访问计数(总/每日/每小时)。
我试图通过使用kafka connect从日志文件流到kafka主题来实现。为了增加Cassandra中的度量计数器,我可以再次使用Kafka Connect吗?否则,这里应该使用哪种其他工具,例如kafka溪流,火花,叮当声,卡夫卡连接等?
答案 0 :(得分:3)
您正在谈论做流处理,Kafka可以这样做 - 使用Kafka's Streams API或KSQL。 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。