我如何减少或有必要减少Cassandra中大量数据的分区数量?

问题描述 投票:0回答:1

我估计有5亿行数据具有500万个唯一数字。我的查询必须通过numberevent_date获取数据。 number作为分区键,将有500万个分区。我认为存在大量小分区并在查询期间发生超时是不好的。我在定义分区键时遇到麻烦。我找到了一些synthetic sharding strategies,但无法应用于我的模型。我可以通过mod号定义分区键,但是行在分区之间的分布不是平衡的。

我如何对此模型化以减少分区数或减少分区数?有分区计数限制吗?

CREATE TABLE events_by_number_and_date (
  number bigint,
  event_date int, /*eg. 20200520*/
  event text,
  col1 int,
  col2 decimal
  PRIMARY KEY (number, event_date)
);
cassandra data-modeling partitioning
1个回答
0
投票

对于您的查询,更改数据模型将无济于事,因为您使用的是不适合Cassandra的查询。尽管Cassandra支持聚合,例如最大,计数,平均,总和等,但它们是为在单个分区内工作而设计的,而不是为在整个集群中工作而设计的。如果您在不限制分区键的情况下发出它们,则协调节点需要到达群集中的每个节点,并且它们将需要遍历群集中的所有数据。

您仍然可以执行这种查询,但是最好使用Spark这样的查询,因为它已针对并行数据处理进行了充分优化,并且Spark Cassandra Connector能够正确执行数据查询。如果无法使用Spark,则可以使用类似于this的代码来实现自己的完整令牌范围扫描。但是无论如何,不​​要指望会有“实时”答案(<1秒)。

© www.soinside.com 2019 - 2024. All rights reserved.