Spark (Direct) Streaming 的自然替代品是 Spark Structured Streaming 还是 Kafka Streams?
Is the natural replacement for Spark (Direct) Streaming either Spark Structured Streaming or Kafka Streams?
在过去几年中,我们开发了相当多的 Spark Streaming(直接 API)应用程序,这些应用程序正在读取或写入 to/from Kafka、IBM MQ、Hive、HBase、HDFS 等我们的 Cloudera 平台。现在 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 与 Scala 有一些 limitations。尽管我们可能会通过离开低级别 API 的 RDD 并转移到更高级别的 DataFrame 来失去一些灵活性,但我们可以利用 Spark 来构建我们的知识。
另一方面,Kafka Streams 在处理 Kafka 主题之间的数据时可能是最佳选择,这是我们的主要用例。看看 Confluent 附带的所有 Kafka 连接器,其他用例也可以使用。
您目前有一些 Spark 调度程序,因此您可以使用结构化流,它与旧流二进制兼容 API。
如果您使用的是 Mesos 或 k8s,那么将 Kafka Streams 应用程序放在 Docker 和 运行 中,它们比 Spark 更容易扩展、监控和配置,IMO,因为它的作用与任何其他应用程序一样Docker 这些系统中的容器,因此您可以围绕所有内容构建一个模式
Kafka Streams... is probably the best choice when it comes to processing data between Kafka topics
没错。
Kafka Streams has a few limitations with Scala.
我想你可能想继续阅读该部分
The Kafka Streams DSL for Scala library is a wrapper over the existing Java APIs for Kafka Streams DSL that addresses the concerns raised
当然,您始终可以使用 Kotlin 与 Java API
更好地互操作
在过去几年中,我们开发了相当多的 Spark Streaming(直接 API)应用程序,这些应用程序正在读取或写入 to/from Kafka、IBM MQ、Hive、HBase、HDFS 等我们的 Cloudera 平台。现在 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 与 Scala 有一些 limitations。尽管我们可能会通过离开低级别 API 的 RDD 并转移到更高级别的 DataFrame 来失去一些灵活性,但我们可以利用 Spark 来构建我们的知识。
另一方面,Kafka Streams 在处理 Kafka 主题之间的数据时可能是最佳选择,这是我们的主要用例。看看 Confluent 附带的所有 Kafka 连接器,其他用例也可以使用。
您目前有一些 Spark 调度程序,因此您可以使用结构化流,它与旧流二进制兼容 API。
如果您使用的是 Mesos 或 k8s,那么将 Kafka Streams 应用程序放在 Docker 和 运行 中,它们比 Spark 更容易扩展、监控和配置,IMO,因为它的作用与任何其他应用程序一样Docker 这些系统中的容器,因此您可以围绕所有内容构建一个模式
Kafka Streams... is probably the best choice when it comes to processing data between Kafka topics
没错。
Kafka Streams has a few limitations with Scala.
我想你可能想继续阅读该部分
The Kafka Streams DSL for Scala library is a wrapper over the existing Java APIs for Kafka Streams DSL that addresses the concerns raised
当然,您始终可以使用 Kotlin 与 Java API
更好地互操作