Kafka python API 是不是支持流处理?

Posted

技术标签:

【中文标题】Kafka python API 是不是支持流处理?【英文标题】:Does Kafka python API support stream processing?Kafka python API 是否支持流处理? 【发布时间】:2019-01-25 21:16:47 【问题描述】:

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

【问题讨论】:

有github.com/wintoncode/winton-kafka-streams——这不是 Apache Kafka 的一部分。我不知道它有多稳定,是否适合生产。 还有github.com/robinhood/faust 【参考方案1】:

Kafka Streams 仅作为 JVM 库提供,但它至少有两个 Python 实现

robinhood/faust(截至 2020 年未维护,但 was forked) wintincode/winton-kafka-streams(好像没维护)

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

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

如果您对 HTTP 方法没问题,那么运行 KSQLDB 实例(同样,该服务器需要 Java)并使用内置 SQL 函数从 Python 调用其 REST 接口可以工作。但是,在那里构建自己的函数需要编写 Java 代码,我上次检查过。

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

【讨论】:

有没有使用docs.confluent.io/current/ksql/docs/tutorials/… 和faust 流的示例或教程? KSQL 是用 Java 实现的,所以我不确定我是否理解这个问题 @circket_007,KSQL 在 python 中不可用。这就是你的意思。我说的对吗? @Maha KSQL 服务器有一个 REST API,所以你可以提交任何语言的查询【参考方案2】:

如果您使用的是 Apache Spark,则可以将其用作 生产者消费者。无需依赖 Faust 等第三部分库,但您将需要 Spark 集群管理器(独立、YARN 或 Kubernetes 来扩展它)

要在 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.0PySpark 进行测试。

This 资源也很有用。

【讨论】:

以上是关于Kafka python API 是不是支持流处理?的主要内容,如果未能解决你的问题,请参考以下文章

Spark和Kafka环境安装

我可以使用spark 2.3.0和pyspark从Kafka进行流处理吗?

Kafka 消费者 API 上的 Kafka Streams DSL

KafkaFlumeKinesis更多的流方式支持,包括TwitterZeroMQ等

Kafka流处理平台

Kafka 简单实验二(Python实现简单生产者消费者)