Искра пишет Кассандре с различным TTL ⇐ JAVA
-
Гость
Искра пишет Кассандре с различным TTL
В Java Spark у меня есть фрейм данных со столбцом «bucket_timestamp», который представляет время сегмента, которому принадлежит строка.
Я хочу записать фрейм данных в базу данных Cassandra. Данные должны быть записаны в БД с TTL. TTL должен зависеть от временной метки сегмента, где TTL каждой строки должен рассчитываться как ROW_TTL = CONST_TTL - (CurrentTime - Bucket_timestamp), где CONST_TTL — это постоянный TTL, который я настроено.
В настоящее время я пишу в Cassandra с помощью искры, используя постоянный TTL, со следующим кодом:
df.write().format("org.apache.spark.sql.cassandra") .options(new HashMap() { { put("пространство_ключей", "имя_пространства_ключей"); put("таблица, "имя_таблицы"); put("spark.cassandra.output.ttl, Long.toString(CONST_TTL)); // Должно зависеть от столбца Bucket_timestamp } }).mode(SaveMode.Overwrite).save(); Один из возможных способов, о котором я подумал, - для каждой возможной Bucket_timestamp - фильтровать данные по временной метке, вычислять TTL и записывать отфильтрованные данные в Cassandra. но это кажется очень неэффективным и не лучшим способом. Есть ли в Java Spark способ предоставить столбец Spark в качестве параметра TTL, чтобы TTL был разным для каждой строки?
Решение должно работать с Java и набором данных< Row>: я встречал некоторые решения для выполнения этого с помощью RDD в Scala, но не нашел решения для использования Java и dataframe.
Спасибо!
В Java Spark у меня есть фрейм данных со столбцом «bucket_timestamp», который представляет время сегмента, которому принадлежит строка.
Я хочу записать фрейм данных в базу данных Cassandra. Данные должны быть записаны в БД с TTL. TTL должен зависеть от временной метки сегмента, где TTL каждой строки должен рассчитываться как ROW_TTL = CONST_TTL - (CurrentTime - Bucket_timestamp), где CONST_TTL — это постоянный TTL, который я настроено.
В настоящее время я пишу в Cassandra с помощью искры, используя постоянный TTL, со следующим кодом:
df.write().format("org.apache.spark.sql.cassandra") .options(new HashMap() { { put("пространство_ключей", "имя_пространства_ключей"); put("таблица, "имя_таблицы"); put("spark.cassandra.output.ttl, Long.toString(CONST_TTL)); // Должно зависеть от столбца Bucket_timestamp } }).mode(SaveMode.Overwrite).save(); Один из возможных способов, о котором я подумал, - для каждой возможной Bucket_timestamp - фильтровать данные по временной метке, вычислять TTL и записывать отфильтрованные данные в Cassandra. но это кажется очень неэффективным и не лучшим способом. Есть ли в Java Spark способ предоставить столбец Spark в качестве параметра TTL, чтобы TTL был разным для каждой строки?
Решение должно работать с Java и набором данных< Row>: я встречал некоторые решения для выполнения этого с помощью RDD в Scala, но не нашел решения для использования Java и dataframe.
Спасибо!
Мобильная версия