Kafka python API支持流处理吗?

问题描述 投票:0回答:4

我在Java中使用了Kafka Streams。我在 python 中找不到类似的 API。 Apache Kafka 支持 python 中的流处理吗?

python apache-kafka apache-kafka-streams kafka-python stream-processing
4个回答
37
投票

Kafka Streams 仅作为 JVM 库提供,但有一些类似的 Python 实现

理论上,您可以尝试使用 Jython 或 Py4j 来处理 JVM 实现,但可能需要做不必要的工作。

除了这些选项之外,您还可以尝试Apache BeamFlinkSpark,但它们都需要外部集群调度程序来横向扩展(并且还需要安装Java)。

如果您可以使用 HTTP 方法,则可以运行 KSQLDB 实例(同样,该服务器需要 Java)并使用内置 SQL 函数从 Python 调用其 REST 接口。然而,构建你自己的函数需要编写 JVM 编译的代码,最后我检查了一下。

如果这些选项都不合适,那么您将不得不使用基本的消费者/生产者方法。


6
投票
如果您使用

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.1Kafka 2.7.0PySpark 进行了测试。

这个资源也很有用。


1
投票
以前 KStrame python API 不可用,但现在可以通过新的 KStream python 库使用

https://pypi.org/project/kstreams/

特点:

    制作活动
  1. Streams 的消费者活动
  2. Prometheus 指标和自定义监控
  3. 测试客户端
  4. 自定义序列化和反序列化
  5. 易于与任何异步框架集成。不与任何图书馆绑定!!
  6. 从流中产生事件
  7. 存储(kafka 流模式)
  8. 串流加入
  9. 开窗

0
投票
有一个相对较新的库,称为

FastStream

FastStream 是一个功能强大且易于使用的 Python 框架,用于构建与 Apache Kafka、RabbitMQ、NATS 和 Redis 等事件流交互的异步服务。

它看起来真的很好,而且使用起来也很简单,虽然我还没有亲自使用过它。它正在不断发展,并支持除 Kafka 之外的更多代理(如 RabbitMQ)。

© www.soinside.com 2019 - 2024. All rights reserved.