Spark 2.1 Structured Streaming - 使用 Kakfa 作为 Python 的源 (pyspark)

Posted

技术标签:

【中文标题】Spark 2.1 Structured Streaming - 使用 Kakfa 作为 Python 的源 (pyspark)【英文标题】:Spark 2.1 Structured Streaming - Using Kakfa as source with Python (pyspark) 【发布时间】:2017-08-11 21:02:35 【问题描述】:

对于 Apache Spark 2.1 版,我想使用 Kafka (0.10.0.2.5) 作为 pyspark 结构化流的源:

kafka_app.py:

from pyspark.sql import SparkSession

spark=SparkSession.builder.appName("TestKakfa").getOrCreate()

kafka=spark.readStream.format("kafka") \
.option("kafka.bootstrap.servers","localhost:6667") \
.option("subscribe","mytopic").load()

我通过以下方式启动了应用程序:

./bin/spark-submit kafka_app.py --master local[4] --jars spark-streaming-kafka-0-10-assembly_2.10-2.1.0.jar

从 mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-0-10-assembly_2.10/2.1.0 下载 .jar 后

我得到这样的错误:

[...] java.lang.ClassNotFoundException:Failed to find data source: kakfa. [...]

同样,我无法运行与 Kakfa 集成的 Spark 示例:https://spark.apache.org/docs/2.1.0/structured-streaming-kafka-integration.html

所以我想知道我哪里错了,或者实际上是否支持使用 pyspark 与 Spark 2.1 的 Kafka 集成,因为此页面仅提到 Scala 和 Java 作为 0.10 版中支持的语言让我怀疑:https://spark.apache.org/docs/latest/streaming-kafka-integration.html (但如果还不支持,为什么要发布 Python 中的示例?)

提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

您需要使用 sql 结构化的流 jar "spark-sql-kafka-0-10_2.11-2.1.0.jar" 而不是 spark-streaming-kafka-0-10-assembly_2.10-2.1.0 .jar。

【讨论】:

您如何知道要指定的版本以及要使用的语法? (例如,我见过使用:, 分隔最后一部分:2.1.0.jar。或者,我应该指定最后一个.jar 部分还是可以省略它?)你怎么知道哪个存储库指定,如果有的话? (我试图在 pyspark-sell 参数中将这些选项指定为 --packages)

以上是关于Spark 2.1 Structured Streaming - 使用 Kakfa 作为 Python 的源 (pyspark)的主要内容,如果未能解决你的问题,请参考以下文章

大数据Spark Structured Streaming

Spark Structured Streaming实战

Spark Structured Streaming

Spark Structured Streaming

Spark Structured Streaming - 1

删除由 spark-structured-streaming 写入的损坏的 parquet 文件时,我会丢失数据吗?