Является ли естественная замена потоковой передачи Spark (Direct) потоковой структурой Spark или потоками Kafka? - PullRequest
0 голосов
/ 20 февраля 2020

За последние несколько лет мы разработали довольно много приложений Spark Streaming (Direct API), которые читают или пишут в / из Kafka, IBM MQ, Hive, HBase, HDFS и другие на нашей платформе Cloudera. Теперь, когда Direct API Spark Streaming (в настоящее время у нас версия 2.3.2) устарела, и мы недавно добавили платформу Confluent (поставляется с Kafka 2.2.0) в наш проект, мы планируем перенести эти приложения.

Что является естественной заменой наших приложений Spark Streaming? Должны ли мы перейти на Spark Structured Streaming или, скорее, на Kafka Streams?

У меня лично нет опыта работы с обеими платформами, но, на мой взгляд, Spark Structured Streaming кажется естественным выбором. Наша кодовая база в основном написана на Scala, что также может быть использовано для структурированного API. Kafka Streams имеет несколько ограничений с Scala. Хотя мы можем потерять некоторую гибкость, оставив низкоуровневый API RDD и перейдя на более высокий уровень DataFrames, мы могли бы опираться на наши знания в Spark.

С другой стороны, есть Kafka Streams, который, вероятно, является лучшим выбор, когда речь идет об обработке данных между темами Kafka, что является нашим основным вариантом использования. И, глядя на все коннекторы Kafka, которые поставляются с Confluent, можно использовать и другие варианты использования.

1 Ответ

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

В настоящее время у вас есть планировщик Spark, поэтому вы можете использовать структурированную потоковую передачу, которая двоично совместима со старым API потоковой передачи.

Если вы используете Mesos или k8s, то добавьте приложения Kafka Streams в Docker и запускать их проще, масштабировать, отслеживать и настраивать, чем Spark, IMO, поскольку он действует как любой другой Docker контейнер в этих системах, поэтому вы строите шаблон вокруг всего

Kafka Streams. Вероятно, это лучший выбор для обработки данных между темами Кафки

True.

Kafka Streams имеет несколько ограничений с Scala.

Я думаю, вы, возможно, захотите продолжить чтение этого раздела.

. Библиотека DSL Kafka Streams для Scala является оболочкой для существующих Java API для Kafka Streams. DSL, который решает проблемы

Конечно, вы всегда можете использовать Kotlin для лучшего взаимодействия с Java API

...