我正在研究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/
答案 0 :(得分:0)
我认为您需要在spark-submit
命令时提供kafka jar文件的绝对路径,如下所示:
./bin/spark-submit --jars spark-streaming-kafka-0-8-assembly_2.11-2.0.0.jar
答案 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()