Spark Streaming для обновления SQL Сервер (транзакция) - PullRequest
0 голосов
/ 29 января 2020

В настоящее время у меня есть некоторый код pyspark, который читает данные (readStream) из kafka topi c, и я планирую обновить таблицу SQL Server с помощью транзакции. Потоковые данные будут иметь все три транзакции INSERT, UPDATE, DELETE.

Не могли бы вы предложить лучший подход для достижения этой цели?

1 Ответ

0 голосов
/ 01 февраля 2020

Чтение Kafka topi c через код Pyspark и обновление событий (Вставка, Обновление, Удаление) на сервере SQL не будет правильным подходом, что я чувствую.

Причина почему?

Рассмотрим событие вставки, которое происходит в Кафке. В этом случае соответствующий ключ не будет доступен в целевой таблице и может быть записан непосредственно в целевой таблице без каких-либо проблем. Но когда вы обрабатываете другие события (обновление и удаление) из Кафки. Мы не можем записать его в таблицу Target напрямую, не сравнивая существующее значение ключа. Чтобы сравнить это значение ключа, весь набор данных необходимо вернуть в память в виде фрейма данных или RDD (как мы знаем, pyspark работает в памяти) для сравнения и перезаписи целевой таблицы. Обработка записей всей целевой таблицы В памяти не будет правильного подхода.

Альтернативное решение: Мы можем выбрать Cassandra для этого решения, так как C* работает в режиме Upsert. Но моделирование данных Cassandra отличается от SQL server.

...