【发布时间】: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