Cassandra无法查询表中的行总和
我正在使用Cassandra数据库捕获和保存一个简单的网络嗅探器数据,但由于表中的行数大于20M+行,因此无法运行任何聚合函数,如Cassandra无法查询表中的行总和,cassandra,datastax,cql,Cassandra,Datastax,Cql,我正在使用Cassandra数据库捕获和保存一个简单的网络嗅探器数据,但由于表中的行数大于20M+行,因此无法运行任何聚合函数,如sum或count 以下是我的表模式: CREATE TABLE db.uinfo ( id timeuuid, created timestamp, dst_ip text, dst_mac text, dst_port int, protocol int, src_ip text, src_mac t
sum
或count
以下是我的表模式:
CREATE TABLE db.uinfo (
id timeuuid,
created timestamp,
dst_ip text,
dst_mac text,
dst_port int,
protocol int,
src_ip text,
src_mac text,
src_port int,
PRIMARY KEY (id, created)
) WITH CLUSTERING ORDER BY (created 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', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
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 = '99PERCENTILE';
现在,当我运行查询时(有限制或无限制):
它向我抛出以下错误:
OperationTimedOut: errors={'127.0.0.1': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=127.0.0.1
你们这些好人能帮我做同样的事吗?我已尝试分别更改cqlshrc
和cassandra.yaml
中的超时。我甚至尝试使用以下方式启动cqlsh:
cqlsh——连接超时=120——请求超时=120
我使用的是
[cqlsh5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]
当您的Cassandra中有相对较大的数据时,这种查询将无法使用-这种查询需要扫描整个数据库,并读取其中的所有数据。当您知道要访问的分区时,Cassandra非常棒,因此,只将查询发送到可以非常有效地处理它们的各个服务器。所以聚合函数只能在分区内工作
如果需要完成此类查询,通常建议使用Spark并行读取数据并执行聚合。您可以使用,但它会比通常的查询慢-可能几十秒,甚至几分钟,这取决于数据的大小、Spark作业的硬件等
如果您需要经常执行此类查询,那么您需要寻找其他技术,但很难说在这种情况下谁会表现良好
OperationTimedOut: errors={'127.0.0.1': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=127.0.0.1