Я придумал два разных конвейера - один для пакетных данных (sqoop / spark / hive), а другой для данных в реальном времени (kafka-spark stream).
Pipeline 1: Sqoop - хороший выбор для пакетной загрузки, но он будет снижать производительность, потому что базовая архитектура все еще находится на пониженном уровне. Хотя есть варианты запустить sqoop на spark, но я этого не пробовал. Когда данные находятся в HDFS, вы можете использовать куст, который является отличным решением для пакетной обработки. Сказав, что вы можете заменить sqoop на Spark, если вы беспокоитесь о времени выборки RDMS. Вы также можете сделать пакетные преобразования в искре. Я бы сказал, что это хорошее решение.
Pipeline 2: Потоковая передача Kafka и Spark - наиболее очевидный выбор и хороший выбор. Но, если вы используете Confluent dist. Кафки, то вы могли бы заменить большинство искровых преобразований на K-SQL, K-Streams, которые будут создавать преобразования в реальном времени.
Я бы сказал, хорошо иметь отдельную систему для пакетной обработки и одну для реального времени. ,Вот что такое лямбда-архитектура. Но если вы ищете более унифицированную платформу, вы можете попробовать Apache Beam , которая предоставляет унифицированную платформу для пакетной обработки и обработки в реальном времени. Вы можете выбрать один из нескольких участников для выполнения вашего запроса.
Надеюсь, это поможет :)