Pyspark无法找到数据源:kafka

时间:2019-11-06 04:53:24

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

我正在研究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/

2 个答案:

答案 0 :(得分:0)

我认为您需要在spark-submit命令时提供kafka jar文件的绝对路径,如下所示:

./bin/spark-submit --jars spark-streaming-kafka-0-8-assembly_2.11-2.0.0.jar

您可以从here下载jar文件。有关详细信息,请参见this

答案 1 :(得分:0)

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

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
submit_args = '--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0'
if 'PYSPARK_SUBMIT_ARGS' not in os.environ:
    os.environ['PYSPARK_SUBMIT_ARGS'] = submit_args
else:
    os.environ['PYSPARK_SUBMIT_ARGS'] += submit_args

# initialize spark
import pyspark
findspark.init()