You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook中Spark无法加载Kafka数据源问题求助

解决Jupyter Notebook中Spark Structured Streaming找不到Kafka数据源的问题

问题背景

Mac本地环境下,通过spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.4可以正常运行读取Kafka的代码,但在Jupyter Notebook中通过SparkSession.builder.config("spark.jars.packages", "org.apache.spark:spark-sql-kafka-0-10_2.12:3.4")配置后,执行代码报AnalysisException: Failed to find data source: kafka,且Spark Web UI显示该包已存在于spark.jars.packages配置中。

解决方案

1. 修改Spark默认配置文件,提前加载依赖

在$SPARK_HOME/conf/spark-defaults.conf文件中添加以下配置(文件不存在则新建):

spark.jars.packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.4

保存后重启Jupyter Notebook内核,Spark启动时会自动下载并加载Kafka相关依赖包。

2. 配置Jupyter的PySpark内核启动参数

找到PySpark内核的配置文件kernel.json(通常路径为~/.local/share/jupyter/kernels/pyspark/kernel.json),在argv数组中添加--packages参数:

{
  "argv": [
    "/path/to/your/python",
    "-m",
    "ipykernel_launcher",
    "--packages", "org.apache.spark:spark-sql-kafka-0-10_2.12:3.4",
    "-f", "{connection_file}"
  ],
  "display_name": "PySpark",
  "language": "python"
}

修改后重启Jupyter,内核启动时会带上依赖参数,确保Kafka数据源类被正确加载。

3. 手动复制依赖包到Spark jars目录

  1. 执行spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.4 --version,触发依赖包下载,包会被缓存到~/.ivy2/cache目录下。
  2. 找到以下核心jar包:
    • org.apache.spark/spark-sql-kafka-0-10_2.12/3.4/jars/spark-sql-kafka-0-10_2.12-3.4.jar
    • org.apache.kafka/kafka-clients/[对应版本]/jars/kafka-clients-[对应版本].jar
    • org.apache.spark/spark-token-provider-kafka-0-10_2.12/3.4/jars/spark-token-provider-kafka-0-10_2.12-3.4.jar
  3. 将这些jar包复制到$SPARK_HOME/jars目录下,重启Jupyter内核即可。

原因说明

spark-submit会主动处理依赖包的下载、解析和类路径注入,而Jupyter Notebook中通过SparkSession.builder动态配置spark.jars.packages时,可能因SparkContext初始化顺序问题,导致Kafka数据源的注册类未被正确加载——即使UI显示配置存在,实际类路径中并未包含相关依赖。

内容的提问来源于stack exchange,提问作者steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 23:43:21