У меня проблема с разработкой эффективного конвейера Spark для варианта использования ETL.Это приложение Spark Streaming, которое связано с темой Kafka в его источнике.Теперь фактические данные не отправляются через Kafka, а вместо этого находятся на HDFS или на сервере NoSQL.Все, что отправляется через Kafka, - это json-сообщение, предоставляющее контекстную информацию (например, местоположение данных для обработки).
Одно из направлений - реализовать карту или flatMap, в которых открыто соединение с бэкендом хранилища.выполните запрос и выдайте (как генератор) данные обратно в информационный фрейм Spark.Однако у меня возникают проблемы с этим подходом, потому что:
1) При возврате данных обратно в фрейм данных, контекстная запись (полученная от kafka) теряется, если запись / детали не склеены в возвращенных записях, которыевызывает огромные накладные расходы, так как мы говорим о данных временных рядов.
2) Во-вторых, в Spark вы должны на самом деле запрашивать данные с помощью API источников данных, чтобы вы получили сокращение разделов и поддержку опускания фильтра Spark (илирасширение источника данных).Но я не понимаю, как я мог бы использовать этот метод, если у меня уже есть DStream, подключенный к Kafka?Должен ли я foreachBatch у водителя создать новый DStream?
Любые советы или мысли приветствуются.
Пол