gpt4 book ai didi

events - 用于连续查询的 Cassandra(+ Spark?)的最佳方法?

转载 作者:行者123 更新时间:2023-12-04 12:40:44 25 4
gpt4 key购买 nike

我们目前使用 Hazelcast ( http://hazelcast.org/ ) 作为分布式内存数据网格。这对我们来说工作得很好,但在我们的用例中,仅在内存中已经耗尽了它的路径,我们正在考虑将我们的应用程序移植到 NoSQL 持久存储。在通常的比较和评估之后,我们接近选择 Cassandra,最终选择 Spark 进行分析。

尽管如此,我们的架构需求仍然存在一个差距,我们仍然没有掌握如何在 Cassandra 中解决(使用或不使用 Spark):Hazelcast 允许我们在其中创建连续查询,无论何时添加/删除/修改行子句的结果集,Hazelcast 调用相应的通知。我们使用它通过带有新/更改行的 AJAX 流不断更新客户端。

这可能是我们正在制造的概念上的不匹配,所以 - 如何最好地解决 Cassandra 中的这个用例(有或没有 Spark 的帮助)? API 中是否有允许对键/子句更改进行连续查询的内容(尚未找到)?有没有其他方法可以获得 key /子句更新流?某种事件?

我知道我们最终可以定期轮询 Cassandra,但在我们的用例中,客户可能对大量表子句通知感兴趣(想想“加利福尼亚海岸线上船舶位置的所有变化”),并迭代出来商店将扼杀流光的可扩展性。

因此,神奇的问题是:我们错过了什么? Cassandra 是适合这份工作的错误工具吗?我们是否不知道 apache 领域内/外的 API 或外部库的特定部分允许这样做?

非常感谢您的帮助!

雨果

最佳答案

我不是 Spark 方面的专家,所以对此持保留态度,但也许您可以使用这样的方法:

  • 使用 Spark 流实时分析传入的数据流并实时向客户推送位置更新。
  • 使用 Cassandra 进行持久存储、缓存 View 和数据汇总,客户端可以从中提取数据。

  • 因此,您将编写一个连接到传入数据流的 Spark 流应用程序,大概是一个定期报告船舶位置的应用程序。当它收到船舶位置时,它会在 Cassandra 中查找船舶的最后一个已知位置(之前存储在该船舶 id 的位置集群时间序列中,按时间戳反向排序,以便最近的位置是第一行) .如果船舶位置发生变化,spark 应用程序将在 Cassandra 中插入一个新的时间序列行并将新位置推送到您的实时客户端。

    Spark 还将为 Cassandra 编写其他更新,以汇总客户可能想知道的内容,例如当前在旧金山湾中有多少船的表格。当客户端单击托架时,会查询汇总表以提取该数据以进行显示。任何需要客户端快速响应的东西都应该由 spark 预先计算并存储在 Cassandra 中以便快速检索。

    当新客户端启动时,他们会首先查询(从)Cassandra 获取所有船只的当前位置,然后从 Spark 应用程序推送对该数据的实时更新。

    关于events - 用于连续查询的 Cassandra(+ Spark?)的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27753935/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com