Возможен поиск Кассандры в каждой микро партии - PullRequest
0 голосов
/ 12 октября 2019

Мы используем структурированную потоковую передачу и пытаемся сделать дедупликацию для исходных данных. Если идентификатор идентификатора будет повторяться в течение 20 дней, мы должны подтвердить раннее время события. 20 день может иметь 10-15 миллиардов строк. Мы не хотим использовать dropDuplicates, так как состояние может быть огромным. Мы думаем об использовании таблицы Кассандры для хранения состояния (скажем, id и минимальное время). Каждый раз, когда запускается микропакет, мы просматриваем состояние хранения таблицы Cassandra с идентификаторами в микропартии. Идентификаторы за 20 дней также находятся на уровне 10-15 миллиардов, или, другими словами, таблица состояний в Кассандре находится на уровне 10-15 миллиардов. Так можно ли искать или объединяться с этой таблицей Кассандры в каждой микропакете?

1 Ответ

1 голос
/ 13 октября 2019

Соединитель Spark Cassandra имеет 2 соответствующих функции в RDD API : joinWithCassandra и leftJoinWithCassandra, которые позволяют выполнять эффективный поиск данных в Cassandra по первичному ключу, например:

val joinWithRDD = someRDD.joinWithCassandraTable("test","table")

Объединение с функциональностью Cassandra не поддерживается в API DataFrame / DataSet в версии соединителя с открытым исходным кодом, но поддерживается в соединителе, являющемся частью DSE Analytics (так называемая DSE DirectРегистрация ). Но вы можете преобразовать свои данные в RDD и выполнить соединение через существующий API.

...