簡體   English   中英

從表復制到表(更改主鍵)

[英]Copy from Table to Table (altering Primary Key)

內容:

我需要更改主鍵的順序

PRIMARY KEY (a, b) --> PRIMARY KEY (b,a)

但是在cassandra中,我不能像這樣更改主鍵:在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: ...

我不太用spark,但是我認為您需要使用新的鍵順序創建第二個表,然后使用spark連接器將第一個表加載到RDD中:

val rdd = sc.cassandraTable(“ keyspace”,“ table1”)

然后使用新的鍵順序將其保存到第二個表中:

rdd.saveToCassandra(“ keyspace”,“ table2”,SomeColumns(“ b”,“ a”))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM