更改组合主键的顺序

时间:2015-12-08 06:27:44

标签: cassandra cql cassandra-2.0 cql3

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

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

  1. 创建一个具有相同列但主键元素顺序不同的新列族
  2. 停止写入进程和nodetool flush
  3. 复制所有/ data / keyspace / columnfamily / files
  4. 重命名文件以匹配新列名称
  5. 使用sstable加载程序将文件加载到新的列族
  6. 但之后主键就搞砸了:

      

    无法将值'53ccb45d4ab0d3560e8c36fd'(对于列'cent')解码为int:unpack需要长度为4的字符串参数

    我也不能使用COPY ...来...因为这只是超时......

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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"))