使用Cassandra,我如何根据我创建主键的方式创建了多少个分区?我一直在关注一个教程,并提到转到bin/cassandra-cli
并使用LIST
命令。但是,最新的Cassandra安装并没有附带这个,我在线阅读了其他文章,表明cli现已弃用。
我是否还能看到使用cqlsh创建的分区?
提前致谢!
答案 0 :(得分:3)
首先,您必须调查A
文件,以查看当前配置的令牌数。这告诉您每个节点将拥有多少个分区:
cassandra.yaml
如果初始标记被注释掉,这意味着节点将在启动期间找出它自己的分区范围。
接下来,您可以使用$ grep num_tokens conf/cassandra.yaml
...
num_tokens: 128
...
$ grep initial_token conf/cassandra.yaml
...
# initial_token: 1
...
命令检查分区范围:
nodetool ring
这将显示哪个分区范围属于群集中的哪个节点。
在上面的示例中,每个节点拥有 128 分区范围。 -9178420363247798327 和 -9127364991967065057 之间的范围属于 127.0.0.2 节点。
您可以使用这个简单的选择来告诉每一行的分区键:
$ bin/nodetool ring
Datacenter: DC1
==========
Address Rack Status State Load Owns Token
9167006318991683417
127.0.0.2 r1 Down Normal ? ? -9178420363247798328
127.0.0.2 r1 Down Normal ? ? -9127364991967065057
127.0.0.3 r1 Down Normal ? ? -9063041387589326037
在分区范围中查找分区键将告诉您存储记录的位置。
您也可以使用cqlsh:mykeyspace> select token(key), key, added_date, title from mytable;
system.token(key) | key | added_date | title
----------------------+-----------+--------------------------+----------------------
-1651127669401031945 | first | 2013-10-16 00:00:00+0000 | Hello World
-1651127669401031945 | first | 2013-04-16 00:00:00+0000 | Bye World
356242581507269238 | second | 2014-01-29 00:00:00+0000 | Lorem Ipsum
356242581507269238 | second | 2013-03-17 00:00:00+0000 | Today tomorrow
356242581507269238 | second | 2012-04-03 00:00:00+0000 | It's good to meet you
(5 rows)
在一个简单的步骤中执行相同操作:
nodetool
这告诉记录带有分区键的位置' first'位于。
注意:如果某些节点关闭,$ bin/nodetool getendpoints mykeyspace mytable 'first'
127.0.0.1
127.0.0.2
命令不会列出这些节点,即使它们应该根据复制设置存储记录。
答案 1 :(得分:2)
cassandra-cli 不与cqlsh相同。阅读本文以获取更多信息:https://wiki.apache.org/cassandra/CassandraCli
获取分区数(密钥)的最简单方法是使用nodetool。
nodetool tablestats <keyspace>.<table>
Keyspace和桌子是可选的。分区数列在键数(估计值)的值下。
如果你想要行数,那么Chris回答是正确的。
SELECT * FROM <keyspace>.<table>;
这将显示表格中的所有行。请记住,这是一项非常昂贵的操作,因为Cassandra必须从群集中具有该表的任何数据的所有节点获取此数据。
答案 2 :(得分:0)
可以只做一个select * from table
,如果查看标题,分区和行键的颜色会有所不同,所以可以这样计算出来。