我在Java中使用了Kafka Streams。我在 python 中找不到类似的 API。 Apache Kafka 支持 python 中的流处理吗?
Kafka Streams 仅作为 JVM 库提供,但有一些类似的 Python 实现
fluvii
(见讨论)理论上,您可以尝试使用 Jython 或 Py4j 来处理 JVM 实现,但可能需要做不必要的工作。
除了这些选项之外,您还可以尝试Apache Beam、Flink或Spark,但它们都需要外部集群调度程序来横向扩展(并且还需要安装Java)。
如果您可以使用 HTTP 方法,则可以运行 KSQLDB 实例(同样,该服务器需要 Java)并使用内置 SQL 函数从 Python 调用其 REST 接口。然而,构建你自己的函数需要编写 JVM 编译的代码,最后我检查了一下。
如果这些选项都不合适,那么您将不得不使用基本的消费者/生产者方法。
Apache Spark,则可以使用Kafka作为生产者,使用Spark Structured Streaming作为消费者。无需依赖像 Faust 这样的第 3 部分库。
要在 Spark 中使用 Kafka 数据流,请使用结构化流 + Kafka 集成指南。
请记住,使用spark-sql-kafka
时,您必须附加
spark-submit
包:
spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.0.1 StructuredStreaming.py
Spark 3.0.1 和 Kafka 2.7.0 与 PySpark 进行了测试。
这个资源也很有用。
FastStream:
FastStream 是一个功能强大且易于使用的 Python 框架,用于构建与 Apache Kafka、RabbitMQ、NATS 和 Redis 等事件流交互的异步服务。它看起来真的很好,而且使用起来也很简单,虽然我还没有亲自使用过它。它正在不断发展,并支持除 Kafka 之外的更多代理(如 RabbitMQ)。