Kafka Python API是否支持流处理?

24

我在Java中使用了Kafka Streams,但在Python中找不到类似的API。 Apache Kafka是否支持Python中的流处理?


有 https://github.com/wintoncode/winton-kafka-streams -- 这不是 Apache Kafka 的一部分。我不知道它的稳定性如何,以及它是否已经适合用于生产环境。 - Matthias J. Sax
3
好的,我会尽力进行翻译。这是需要翻译的内容:"And there is also https://github.com/robinhood/faust" - miguno
3个回答

36

Kafka Streams仅作为JVM库提供,但有一些可以与之相媲美的Python实现

理论上,你可以尝试使用Jython或Py4j来使用JVM实现,但可能需要比必要更多的工作。

除了这些选项之外,您还可以尝试使用Apache Beam, FlinkSpark,但它们每个都需要一个外部集群调度程序来进行扩展(并且还需要安装Java)。

如果您对HTTP方法没有问题,那么运行一个KSQLDB实例(同样,需要Java作为服务器)并且通过内置的SQL函数从Python中调用其REST接口可以工作。然而,如果要构建自己的函数,则需要编写JVM编译代码,就我最后一次检查的情况而言。

如果以上选项都不适用,那么您只能使用基本的消费者/生产者方法。


有没有使用https://docs.confluent.io/current/ksql/docs/tutorials/index.html#ksql-tutorials和faust流处理的示例或教程? - Mahamutha M
KSQL 是用 Java 实现的,所以我不确定我理解这个问题。 - OneCricketeer
@circket_007,Python中没有KSQL可用。这是你的意思吗?我说得对吗? - Mahamutha M
3
KSQL服务器具有REST API,因此您可以从任何语言提交查询。 - OneCricketeer
1
顺便提一下:这是分叉项目的直接链接:https://github.com/faust-streaming/faust - coproc

5
如果你正在使用 Apache Spark,你可以使用 Kafka 作为 生产者(producer),并且使用 Spark Structured Streaming 作为 消费者(consumer)。不需要依赖像 Faust 这样的第三方库。
若要在 Spark 中消费 Kafka 数据流,请使用Structured Streaming + Kafka Integration Guide
请记住,在使用 spark-submit 时,您将需要附加 spark-sql-kafka 包: spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.0.1 StructuredStreaming.py 该解决方案已经在Spark 3.0.1Kafka 2.7.0 以及 PySpark 上进行了测试。
资源也可能会有所帮助。

如果你是一个Python开发者,你可以使用Python编写原始代码(例如,用于探测振动传感器的代码),然后使用Kafka Python库直接发布消息,或者使用fluentd来发布由Python脚本提供的JSON数据。 - undefined

1

之前KStrame的Python API不可用,但现在可以使用新的KStream Python库 https://pypi.org/project/kstreams/

特点:

  1. 生产事件
  2. 使用流消费事件
  3. Prometheus指标和自定义监控
  4. TestClient
  5. 自定义序列化和反序列化
  6. 易于与任何异步框架集成。不绑定到任何库!
  7. 从流中产生事件
  8. 存储(kafka流模式)
  9. 流连接
  10. 窗口化

根据文档,最后三个功能尚未实现。 - OneCricketeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接