【发布时间】:2016-03-17 00:45:35
【问题描述】:
我有一个单节点 cassandra 集群、32 核 CPU、32GB 内存和 3 个 SSD 的 RAID,总共大约 2.5TB。我还有另一台拥有 32 核和 32GB 内存的主机,我在其上运行 Apache Spark。
我在 cassandra 中有一个庞大的历史数据,可能有 600GB。每天大约有超过 100 万条来自 Kafka 的新记录。我需要每天查询这些新行。但卡桑德拉失败了。我很困惑。
我的Cassandra表方案是:
CREATE TABLE rainbow.activate (
rowkey text,
qualifier text,
act_date text,
info text,
log_time text,
PRIMARY KEY (rowkey, qualifier)
) WITH CLUSTERING ORDER BY (qualifier ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}
AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99.0PERCENTILE';
CREATE INDEX activate_act_date_idx ON rainbow.activate (act_date);
CREATE INDEX activate_log_time_idx ON rainbow.activate (log_time);
因为源数据可能包含一些重复数据,所以我需要使用主键来删除重复记录。这张表有两个索引,act_date 是一个日期字符串,如'20151211',log_time 是一个日期时间字符串,如'201512111452',即log_time 将记录分隔得更细。
如果我使用 log_time 选择记录,cassandra 可以工作。但使用 act_date 失败。
首先,触发作业退出并出现错误:
java.io.IOException: Exception during execution of SELECT "rowkey", "qualifier", "info" FROM "rainbow"."activate" WHERE token("rowkey") > ? AND token("rowkey") <= ? AND log_time = ? ALLOW FILTERING: All host(s) tried for query failed (tried: noah-cass01/192.168.1.124:9042 (com.datastax.driver.core.OperationTimedOutException: [noah-cass01/192.168.1.124:9042] Operation timed out))
我尝试将 spark.cassandra.read.timeout_ms 增加到 60000。但该作业发布另一个错误如下:
java.io.IOException: Exception during execution of SELECT "rowkey", "qualifier", "info" FROM "rainbow"."activate" WHERE token("rowkey") > ? AND token("rowkey") <= ? AND act_date = ? ALLOW FILTERING: Cassandra timeout during read query at consistency LOCAL_ONE (1 responses were required but only 0 replica responded)
我不知道如何解决这个问题,我阅读了 spark-cassandra-connector 上的文档,但没有找到任何提示。
所以你想给一些建议来帮助我解决这个问题。
非常感谢!
【问题讨论】:
标签: apache-spark cassandra spark-cassandra-connector