【问题标题】:Is the natural replacement for Spark (Direct) Streaming either Spark Structured Streaming or Kafka Streams?Spark (Direct) Streaming 的自然替代品是 Spark Structured Streaming 还是 Kafka Streams?
【发布时间】:2020-02-19 23:59:49
【问题描述】:

在过去几年中,我们开发了相当多的 Spark Streaming(直接 API)应用程序,这些应用程序在我们的 Cloudera 平台上读取或写入 Kafka、IBM MQ、Hive、HBase、HDFS 和其他应用程序。现在 Spark Streaming 的 Direct API(我们目前有 2.3.2 版)已被弃用,我们最近将 Confluent 平台(Kafka 2.2.0 附带)添加到我们的项目中,我们计划迁移这些应用程序。

我们的 Spark Streaming 应用程序的自然替代品是什么?我们应该迁移到 Spark Structured Streaming 还是 Kafka Streams?

我个人对这两种框架都没有任何经验,但在我看来,Spark Structured Streaming 似乎是自然的选择。我们的代码库主要是用 Scala 编写的,它也可以用于结构化 API。 Kafka Streams 有几个 limitations 和 Scala。虽然离开 RDD 的低级 API 并转移到更高级别的 DataFrame 可能会失去一些灵活性,但我们可以利用 Spark 建立我们的知识。

另一方面,Kafka Streams 可能是处理 Kafka 主题之间的数据时的最佳选择,这是我们的主要用例。看看 Confluent 附带的所有 Kafka 连接器,其他用例也可以提供。

【问题讨论】:

    标签: apache-spark apache-kafka spark-streaming apache-kafka-streams spark-structured-streaming


    【解决方案1】:

    您目前有一些 Spark 调度程序,因此您可以使用与旧的 Streaming API 二进制兼容的 Structured Streaming。

    如果您使用 Mesos 或 k8s,那么将 Kafka Streams 应用程序放在 Docker 中并运行这些应用程序比 Spark、IMO 更容易扩展、监控和配置,因为它充当这些系统中的任何其他 Docker 容器,因此您构建一个围绕一切的模式

    Kafka Streams... 可能是处理 Kafka 主题之间数据的最佳选择

    没错。

    Kafka Streams 对 Scala 有一些限制。

    我认为您可能想继续阅读该部分

    用于 Scala 库的 Kafka Streams DSL 是对现有 Java API 的包装器,用于 Kafka Streams DSL,解决了提出的问题

    当然,您总是可以使用 Kotlin 更好地与 Java API 互操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-19
      • 2018-01-13
      • 2021-05-22
      • 2020-07-25
      • 1970-01-01
      • 2020-09-12
      • 2019-08-08
      • 1970-01-01
      相关资源
      最近更新 更多