cassandra—对时间序列数据流执行查询

2nbm6dog  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(509)

我正在尝试设计我的流媒体应用程序的体系结构,并为这项工作选择合适的工具。
目前的工作方式如下:

来自“应用程序生产者”部分的消息具有 (address_of_sensor, timestamp, content) 元组。
我已经实现了Kafka之前的所有功能,现在我遇到了设计中的主要缺陷。在“Spark流”部分,合并的消息流被转换成事件流。问题是,事件大部分是复合的,由多条消息组成,这些消息在不同的传感器上同时发生。
我不能依赖“到达Kafka的时间”来检测“同时性”。所以在用spark提取信息之前,我必须对Kafka中的信息进行排序。或者,更准确地说,对Kafka的信息进行查询。
也许Cassandra是Kafka的正确替代者?我有非常简单的数据模型,只有两种可能的查询类型可以执行:按地址查询和按时间戳范围查询。也许这是正确的选择?
有人知道Cassandra的产量吗?

chhqkbe1

chhqkbe11#

如果你想在你的时间序列上运行查询,cassandra可能是最合适的——它非常适合写优化,你可以为你的序列构建“宽”行。可以对宽行进行切片,因此您可以只使用一个查询来选择一些时间范围。
另一方面,kafka可以被视为一个原始数据流—您没有查询,只有最近生成的数据。为了基于同一分区中的某个键收集数据,必须仔细选择该键。同一分区内的所有数据都按时间排序。

f2uvfpb9

f2uvfpb92#

基于时间戳的范围查询是cassandra的经典用例,如果您需要基于地址的查询,那么如果使用cassandra,您必须将它们作为集群列。就cassandra吞吐量而言,如果您可以对cassandra集群进行适当的性能分析,您可以获得非常高的写吞吐量。但是我使用了sparkql、cassandra驱动程序和spark-cassandra连接器,它们并不能提供很高的查询吞吐速度,除非您有一个具有高cpu配置的大集群,它不能很好地处理小数据集。
kafka不应该作为查询的数据源,它更多的是提交日志

相关问题