【发布时间】:2019-03-11 11:22:06
【问题描述】:
我在单节点集群中安装了 Apache Cassandra。当我构建列族时,由于基于主键的 murmur3 分区器,数据被分区,并且表不保留主键的顺序。因此,我看到的 SStable 输出将按位置排序,但主键的顺序会改变。
根据我的要求,我不希望主键的顺序被打乱。那么,如何更改 Cassandra 的分区方案呢?我查看了 cassandra.yaml 文件,但没有关于如何更改默认 murmur3 分区程序的说明。如果更改默认值会不会有任何影响?
这是我创建的表:
CREATE TABLE ycsb.expt (
y_id varchar,
field0 varchar,
field1 varchar,
field2 vachar,
PRIMARY KEY (y_id, field0) WITH CLUSTERING ORDER BY (field0 ASC);
向表中添加数据后,这是我执行“select * from expt”时的输出
y_id | field0 | field1 | field2
--------+------------+--------------+------------
user48 | ?O3 :<5[ | *B-0Qa | .
user14 | .J | (=~/0`"4 | 03
user40 | (Uu' | +.0 | ;
user42 | // | ((* | 3O
user8 | , | =Ao3[??< | 4.2(Hm6O
我希望此输出的顺序与我插入数据的顺序相同,并且我已按排序顺序插入(例如:User8、User 14、User40)。尽管创建了聚类键,但它已经对数据进行了洗牌。
如何确保输出按上表排序?
【问题讨论】: