繁体   English   中英

使用来自 pyspark 2.4.4 的火花流

[英]using spark streaming from pyspark 2.4.4

我在 k8s 容器中设置了一个 spark 2.4.4 版本。 我正在尝试编写一个简单的 hello world 来使用像这样的火花流:

from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
spark = SparkSession.builder.appName("pyspark-kafka").getOrCreate()
sc.setLogLevel("WARN")

ssc = StreamingContext(sc, 60)
kafkaStream = KafkaUtils.createDirectStream(ssc, ['users-update'], {"metadata.broker.list":'pubsub-0.pubsub:9092,pubsub-1.pubsub:9092,pubsub-2.pubsub:9092'})

请注意,pubsub-x.pubsub 是对我的容器可见的 kafka 代理。 (还有一个简单的 Python 程序,它在我的最后一行 pyspark 代码中直接使用带有代理和主题的 kafka-python 客户端工作得很好。)

我收到此错误消息:

________________________________________________________________________________________________

  Spark Streaming's Kafka libraries not found in class path. Try one of the following.

  1. Include the Kafka library and its dependencies with in the
     spark-submit command as

     $ bin/spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8:2.4.4 ...

  2. Download the JAR of the artifact from Maven Central http://search.maven.org/,
     Group Id = org.apache.spark, Artifact Id = spark-streaming-kafka-0-8-assembly, Version = 2.4.4.
     Then, include the jar in the spark-submit command as

     $ bin/spark-submit --jars <spark-streaming-kafka-0-8-assembly.jar> ...

________________________________________________________________________________________________

Maven 上的任何地方都没有 2.4.4 版的 kafka 库。 https://search.maven.org/search?q=spark%20kafka显示最后发布的 jar 版本为 2.10 或 2.11。

我的 pyspark 安装中有一个 spark-streaming_2.12-2.4.4.jar jar,但它似乎没有正确的 kafka 类。

感谢您的任何指点! --斯里达

Spark v2.4.4 是使用 scala v2.11 预先构建的。 从火花下载页面:

请注意,Spark 是使用 Scala 2.11 预构建的,但 2.4.2 版除外,它是使用 Scala 2.12 预构建的。

因此,基本上2.102.11是 spark 构建的 scala 版本,您应该下载 spark-streaming-kafka jar,它是在您的案例2.11使用相同版本的 scala 构建的。

我已经检查了 spark 2.4.4 中的 jars 文件夹,并且spark-streaming_2.11-2.4.4.jar jar 存在于那里。 所以你应该删除spark-streaming_2.12-2.4.4.jar如果你已经将它添加到外部的类路径中,否则你会得到版本不匹配。

您可以从这里下载spark-streaming-kafka-0-8-assembly.jar而且我认为您还需要从这里添加kafka-clients jar。

我的 pyspark 安装中有一个 spark-streaming_2.12-2.4.4.jar jar,但它似乎没有正确的 kafka 类。

这是单独用于 Spark 的基本 Streaming 包。 Spark 没有自带 Kafka 类

不推荐使用 Spark Streaming 以支持 Spark Structured Streaming

你想要这个带有 Scala 2.12 的 Spark 包

'org.apache.spark:spark-sql-kafka-0-10_2.12:2.4.4'

你会这样开始,包括引导服务器的选项

df = spark.readStream().format("kafka")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM