我们在Google Cloud Kubernetes上有一个由3个pod组成的Cassandra集群。
我们使用的是Cassandra版本3.9和Google镜像。
当我尝试从表中创建Materialized View时,遇到了问题。
表的模式如下:
当我尝试从表中创建Materialized View时,遇到了问题。
表的模式如下:
CREATE TABLE environmental_data (
block_id int,
timestamp timestamp,
device_id int,
sensor_id int,
.
.
.
PRIMARY KEY (block_id, timestamp, device_id, sensor_id)
我想创建一个以设备 ID 作为群集键的视图,我尝试这样做:
CREATE MATERIALIZED VIEW environmental_data_by_device AS
SELECT block_id, timestamp, device_id, sensor_id,... FROM environmental_data
WHERE block_id is not null
and timestamp is not null
and device_id is not null
and sensor_id is not null
PRIMARY KEY ((device_id), timestamp, sensor_id, block_id)
WITH CLUSTERING ORDER BY (timestamp DESC);
在本地环境下,数据量很小,一切都很顺利。但是在生产环境中,有 8000 万行数据,2 个 pod 崩溃了,并且 Cassandra 出现了以下错误:
Unknown exception caught while attempting to update MaterializedView! environmental_data
java.lang.IllegalArgumentException: Mutation of XXXX bytes is too large for the maximum size of XXXX
还出现了许多 java.lang.OutOfMemoryError: Java heap space
我该怎么做才能确保下一次尝试成功呢?不太可能再次关闭生产 Cassandra。
我已经成功创建了一个基于表的视图,但它并不是很大。