Я использую Соединитель DataStax Spark для заполнения кластера Cassandra и обработки данных в разных заданиях (из-за некоторых неподдерживаемых операций Spark для потоковой обработки, таких как двойное агрегирование). Поэтому я хочу хранить данные в одной таблице для разных заданий. Предполагая, что первое потоковое задание вставляет строку в эту таблицу (с использованием средства записи foreach, поскольку соединитель пока не поддерживает потоковую запись ).
INSERT INTO keyspace_name.table_name (id, col1, col2) VALUES ("test", 1, null);
Что если я добавлю (upsert) набор данных с пустым столбцом в нем, где уже было ненулевое значение для этой строки в Cassandra?
// One row of the dataset = "test", null, 2
dataset.write
.format("org.apache.spark.sql.cassandra")
.option("keyspace", keyspace)
.option("table", table)
.mode(SaveMode.Append)
.save()
Если я правильно понимаю docs , предыдущее ненулевое значение будет заменено новым нулевым значением? Если так, есть ли способ сохранить существующий
ненулевые значения? Или я должен хранить данные в отдельных таблицах для каждого задания?