【发布时间】:2017-04-23 11:28:57
【问题描述】:
我们创建了一个有 9 个节点的 cassandra 集群。每个都配备 4Cores 和 16G RAM。我们正在编写 28 列的 15-25 百万条记录。
我们设计的数据模型如下(我只是重命名了列并缩短了实际架构以使其简洁)。
CREATE TABLE main_table(
col1 ... col28,
PRIMARY KEY((col1,col2),col_date,col_with_some_seq_number))
WITH CLUSTERING ORDER BY (col_date DESC,col_with_some_seq_number desc) AND default_time_to_live = 5270400;
CREATE MATERIALIZED VIEW mv_for_main_table AS
SELECT [col1.. col11],
FROM main_table
WHERE col1 IS NOT NULL AND col2 IS NOT NULL AND col_date IS NOT NULL AND col_with_some_seq_number IS NOT NULL
PRIMARY KEY ((col1),col2, col_date, col_with_some_seq_number)
WITH CLUSTERING ORDER BY (col_date DESC, col_with_some_seq_number DESC, col2 DESC);
它只是将其中一个分区键移动到集群键中 物化视图。
我们正在从 spark 加载数据,没有修改任何与 cassandra 相关的配置。
在摄取了大约 1.5 亿条记录后,摄取开始失败,每个节点都出现了很多变异失败。
物化视图是否存在性能问题?还是我使用的定义效率不高?
我们尝试了一些配置更改,例如减少并发写入、吞吐量 MB。经过所有的尝试,我们已经放弃了物化视图,然后一切都开始正常工作了。
我们已经进行了足够多的测试,得出的结论是,只有在包含物化视图之后,写入速度才会大幅下降,并且突变会被丢弃。
我们计划为上述配置使用单独的表而不是物化视图,但我想知道我们使用的物化视图或数据模型是否有任何错误。
【问题讨论】:
标签: cassandra spark-cassandra-connector