/ / Скопіюйте з таблиці в таблицю (змінюючи первинний ключ) - java, apache-spark, cassandra, міграція бази даних

Копіювати з таблиці в таблицю (зміна основного ключа) - java, apache-spark, cassandra, migration-database

Мені потрібно змінити порядок мого ключа "Примарей"

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

Але в кассандрі я не можу просто змінити ПЕРШИЙ КЛЮЧ, як це: змінити складений первинний ключ у cassandra CQL 3.0

Отже, я просто хочу перемістити дані зі старої таблиці до нової таблиці, яку я створив. Оскільки кількість рядків величезна, мені потрібно використовувати Іскру.

Дані "в":

Я отримую такі дані зі старої таблиці:

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: ...

Відповіді:

1 для відповіді № 1

Я дуже не використовую іскру, але, думаю, вам потрібно створити другу таблицю з новим порядком ключів, а потім завантажити першу таблицю в RDD за допомогою роз'єму іскри:

val rdd = sc.cassandraTable ("простір клавіш", "table1")

Потім збережіть його у другій таблиці з новим порядком ключів:

rdd.saveToCassandra ("простір клавіш", "table2", SomeColumns ("b", "a"))