【问题标题】:Pyspark Failed to find data source: kafkaPyspark 找不到数据源:kafka
【发布时间】:2020-03-02 12:48:29
【问题描述】:

我正在研究 Kafka 流媒体并尝试将其与 Apache Spark 集成。但是,在运行时,我遇到了问题。我收到以下错误。

这是我正在使用的命令。

df_TR = Spark.readStream.format("kafka").option("kafka.bootstrap.servers", "localhost:9092").option("subscribe", "taxirides").load()

错误:

Py4JJavaError:调用 o77.load 时出错。:java.lang.ClassNotFoundException:找不到数据源:kafka。请在http://spark.apache.org/third-party-projects.html查找包

我该如何解决这个问题?

注意:我在 Jupyter Notebook 中运行它

findspark.init('/home/karan/spark-2.1.0-bin-hadoop2.7')
import pyspark
from pyspark.sql import SparkSession
Spark = SparkSession.builder.appName('KafkaStreaming').getOrCreate()
from pyspark.sql.types import *
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils

到这里为止一切都运行良好(以上代码)

df_TR = Spark.readStream.format("kafka").option("kafka.bootstrap.servers", "localhost:9092").option("subscribe", "taxirides").load()

这是出错的地方(代码上方)。

我关注的博客:https://www.adaltas.com/en/2019/04/18/spark-streaming-data-pipelines-with-structured-streaming/

【问题讨论】:

    标签: apache-spark pyspark apache-kafka spark-streaming-kafka


    【解决方案1】:

    不清楚您是如何运行代码的。继续阅读博客,你会看到

    spark-submit \
      ...
      --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0 \
      sstreaming-spark-out.py
    

    您似乎错过了添加 --packages 标志

    在 Jupyter 中,你可以添加这个

    import os
    
    # setup arguments
    os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0'
    
    # initialize spark
    import pyspark
    findspark.init()
    

    注意:_2.11:2.4.0 需要与您的 Scala 和 Spark 版本保持一致...根据问题,您的应该是 Spark 2.1.0

    【讨论】:

    • 添加导入操作系统后,我现在遇到另一个错误。 Py4JJavaError:调用 o27.load 时出错。 : java.lang.ClassNotFoundException: 找不到数据源: kafka.
    • @PKernel 这是因为spark-sql-kafka的版本和你当前运行的spark版本不匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2018-12-01
    • 2021-09-13
    • 2020-01-25
    • 2021-02-23
    • 2018-01-29
    • 2021-06-10
    相关资源
    最近更新 更多