我需要更改我的primarey键的顺序
PRIMARY KEY (a, b) --> PRIMARY KEY (b,a)
但是在cassandra中,我不能像这样改变PRIMARY KEY:alter composite primary key in cassandra CQL 3.0
所以,我只是想将旧表中的数据移动到我创建的新表中。 由于行数很大,我需要使用Spark。
我从旧表中得到这样的数据:
JavaRDD<CassandraRow> initialRDD;
我可以直接将其保存回新表,因为该行本身没有变化吗?
我能做到这一点,但从CassandraRow映射到CassandraRow似乎很荒谬
javaFunctions(initialRDD).writerBuilder("targetKeyspace", "targetTable", mapToRow(CassandraRow.class)).saveToCassandra();
因此,它提示我一个错误:
Some primary key columns are missing in RDD or have not been selected: ...
答案 0 :(得分:1)
我没有非常使用spark,但我认为您需要使用新的键顺序创建第二个表,然后使用spark连接器将第一个表加载到RDD中:
val rdd = sc.cassandraTable(&#34; keyspace&#34;,&#34; table1&#34;)
然后使用新的键顺序将其保存到第二个表:
rdd.saveToCassandra(&#34; keyspace&#34;,&#34; table2&#34;,SomeColumns(&#34; b&#34;,&#34; a&#34;))