Kafka Streams vs. Spark Streaming

17 Mar 2025 | 阅读 2 分钟

Apache Spark

Apache Spark 是一个分布式通用处理系统,可以一次处理 PB 级数据。它主要用于流处理和数据处理。它分布在数千个虚拟服务器之间。大型组织使用 Spark 来处理大量数据集。 Apache Spark 允许使用大约 80 个高级运算符更快地构建应用程序。它通过查询优化器、物理执行引擎和 DAG 调度器获得流数据和批处理数据的高性能。因此,它的速度快了一百倍。

Spark Streaming

Apache Spark 通过 Spark Streaming 实现了大型数据集的流处理。 Spark Streaming 是核心 Spark API 的一部分,允许用户处理实时数据流。 它从不同的数据源获取数据,并使用复杂的算法进行处理。 最后,处理后的数据被推送到实时仪表板、数据库和文件系统。

Kafka Streams

一个用于处理和分析存储在 Kafka 中的数据的客户端库。 Kafka streams 允许用户构建应用程序和微服务。 此外,将输出存储在 Kafka 集群中。 除了 Kafka 之外,它对其他系统没有任何外部依赖。 它一次只处理一个记录。

Kafka Streams vs. Spark Streaming

Kafka Streams vs Spark Streaming

参数Apache KafkaApache Spark
开发者最初由 LinkedIn 开发。 后来,捐赠给 Apache 软件基金会。最初在加州大学开发。 后来,它被捐赠给 Apache 软件基金会。
基础设施它是一个 Java 客户端库。 因此,它可以在支持 Java 的任何地方执行。它在 Spark 堆栈之上执行。 它可以是 Spark 独立、YARN 或基于容器的。
数据源它通过主题和流本身处理来自 Kafka 的数据。Spark 从各种文件、Kafka、套接字源等摄取数据。
处理模型它在事件到达时处理它们。 因此,它使用“事件处理(连续)”模型。它有一个微批处理模型。 它将传入的流分成小批次以进行进一步处理。
延迟它比 Apache Spark 的延迟低它具有更高的延迟。
ETL 转换Apache Kafka 中不支持它。Spark 中支持此转换。
容错Kafka 中的容错很复杂。Spark 中的容错很容易。
语言支持它主要支持 Java。它支持多种语言,例如 Java、Scala、R、Python。
用例《纽约时报》、Zalando、Trivago 等使用 Kafka Streams 来存储和分发数据。Booking.com、Yelp(广告平台)使用 Spark streams 每天处理数百万个广告请求。