我正在尝试从一个Cassandra表中选择所有记录(~10M记录),这些记录应该使用CQL shell分布在4个节点上,但每次我这样做时它会将输出分区为1K记录Max。所以我的问题是,我可以一次选择所有记录,因为我想看看Cassandra需要多长时间来检索所有记录。
答案 0 :(得分:4)
当您从CF"编写" SELECT *时CQL客户端永远不会一次选择所有内容。它只是对大数据的愚蠢行为。相反,它只会加载第一页并给你一个迭代器。 2.0版的Cassandra支持自动查询分页。因此,您应该调用select all查询和ITERATE over pages来加载完整列族。查看example的python客户端。现在无法在CQL中加载所有操作,并且它不应该是。
答案 1 :(得分:0)
虽然已经指出尝试加载cqlsh中的所有数据是一个坏主意,但您尝试做的仍然有些可能。您只需设置一个限制,可能会增加cqlsh的超时。
user@host:~# cqlsh --request-timeout=600
这将启动shell,请求超时为10分钟。
select * from some_table limit 10000000;
请不要在生产环境中使用它,因为它可能会对性能和群集可用性产生严重影响!