当前位置: 首页 > 知识库问答 >
问题:

Cassandra之上的Spark如何影响Cassandra数据建模?

史劲
2023-03-14

我在处理Cassandra时学到的第一件事是,您需要非常小心您的数据模型,因为Cassandr不支持联接、聚合等。因此,您可以根据查询对数据进行建模,使用广泛的去规范化等。

但是,假设我已经决定在Cassandra上运行Spark。Spark将允许对html" target="_blank">数据进行连接和聚合,以及不同的计算。

所以我的问题是,当在Cassandra中对我的数据建模并考虑到我将在其上运行Spark时,我需要改变我的模型以使它们适合Spark进行更快的计算,还是我仍然需要坚持在plain Cassandra中进行数据建模的最佳实践?

例如,如果我在cassandra中有表1和表2,它们保存相同的数据,但是在表1中,数据由Key1、Key2 (partion key)键入,而在表2中,数据由Key1、Key3 (partion key)键入,这实际上是我的数据的两个视图,可以快速查询。如果我需要通过Key1、Key2、Key3查询数据,我必须创建第三个表Table3。但是知道我可以在Cassandra之上的Spark中查询和连接Table1和Table2,我可能不需要创建Table3?

共有1个答案

邹修真
2023-03-14

Table1 Table2表示两次读取,而只有Table3表示一次读取。所以带有复合主键的Table3会更快

 类似资料:
  • 谁能解释一下从一个表读取数据并将其写入另一个表时,火花的内部工作在cassandra中。 以下是我的用例: 我正在通过一个kafka主题将来自IOT平台的数据摄取到cassandra中。我有一个小型python脚本,它解析来自kafka的每条消息以获取它所属的表名,准备查询并使用datastax的cassandra-python驱动程序将其写入cassandra。使用该脚本,我每分钟能够将大约30

  • 我目前有一个应用程序,它将事件驱动的实时流数据持久化到一个列系列,该系列建模为: 每个帐户ID每X秒发送一次数据,因此我们每次收到事件时都会覆盖现有行。此数据包含当前实时信息,我们只关心最近的事件(不使用旧数据,这就是我们插入已经存在的键的原因)。从应用程序用户端-我们通过account_id语句查询选择。 我想知道是否有更好的方法来模拟这种行为,并查看了Cassandra的最佳实践和类似的问题(

  • 我得到了一个错误:- 线程“main”java.lang.nosuchmethoderror:com.datastax.driver.core.queryoptions.setrefreshnodeintervalmillis(I)lcom/datastax/driver/core/queryoptions;**在com.datastax.spark.connector.cql.defaultCo

  • 过去几天,我一直在浏览在线文章、视频,甚至是堆叠帖子,以了解如何在cassandra中建模数据。我理解需要根据查询模式对数据进行建模,但我不理解的是cassandra中的列族和列关系,如果这适用于它们,我想查询数据。 我有一个关系数据库表,其中包含以下内容 本质上,它是一个包含客户 ID 及其账户 ID 的表,因此唯一键将cust_id acct_id。每个客户可以有多个 1 个或多个帐户。有一些

  • 我有一个Cassandra节点集群,每个节点机器上都有Spark worker。对于通信,我使用Datastax Spark-Cassasndra连接器。Datastax连接器是否对同一台机器中的工作人员从Cassandra节点读取数据进行了优化,或者在机器之间存在一些数据流?

  • 线程“streaming-job-executor-53”java.lang.noClassDefounderror:com/datastax/spark/connector/columnselector在com.enerbyte.spark.jobs.wattiopipeline.wattiopipelineStreamingJob$$anonFun$main$2.在com.enerbyte.s