我有一个 Cassandra,我想使用 cql“IN”查询。因此,我必须更改组合主键中元素的顺序(只有最后一部分可用于“IN”查询)。该表很大,但现在不跨多个节点。
所以我现在尝试的(不起作用)如下:
- 创建一个具有相同列但主键元素顺序不同的新列族
- 停止写进程和 nodetool flush
- 复制所有/data/keyspace/columnfamily/文件
- 重命名文件以匹配新的列族名称
- 使用 sstable 加载器将文件加载到新的列族中
但之后主键就乱了:
Failed to decode value '53ccb45d4ab0d3560e8c36fd' (for column 'cent') as int: unpack requires a string argument of length 4
我也不能使用 COPY ... TO ... 因为这只是超时 ...
有什么想法吗?
最佳答案
GIT 上有几个很好的批量加载器,它们工作得更好并且不会像 CQLSH COPY TO/FROM 工具那样超时。
否则,我建议您使用 SPARK 之类的工具来为您移动数据。
一旦您已经创建了第二个表,您也可以使用 SCALA:
val mydata = sc.cassandraTable("mykeyspace","mytable")
.select("key","column1","column2","column3")
mydata.saveToCassandra("whateverkeyspace","whatevertable", SomeColumns("key","column1","column2","colum3"))
关于cassandra - 更改复合主键的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34149391/