cassandra - 更改复合主键的顺序

标签 cassandra cql cassandra-2.0 cql3

我有一个 Cassandra,我想使用 cql“IN”查询。因此,我必须更改组合主键中元素的顺序(只有最后一部分可用于“IN”查询)。该表很大,但现在不跨多个节点。

所以我现在尝试的(不起作用)如下:

  1. 创建一个具有相同列但主键元素顺序不同的新列族
  2. 停止写进程和 nodetool flush
  3. 复制所有/data/keyspace/columnfamily/文件
  4. 重命名文件以匹配新的列族名称
  5. 使用 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 工具那样超时。

You can find it here.here

否则,我建议您使用 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/

相关文章:

nosql - Cassandra 存储与内存大小

cassandra - Cassandra如何存储多列主键(CQL)

java - cassandra 3.5 无法加载触发器类

java - 带有连字符 (-) 的 Cassandra Keyspace 名称

cassandra - 无法在cassandra中的远程和本地服务器上运行nodetool

Cassandra 通过网络执行命令

spring-boot - 使用 Spring Boot 通过 Cassandra Config 获取指标异常

cassandra - Apache Cassandra 远程访问

hadoop - 增加 map 数量并减少功能

asynchronous - 异步 cassandra 查询