PySpark 3.4.0虚拟环境Jupyter中spark-sql-kafka依赖安装失败
解决PySpark 3.4.0 + macOS环境下spark-sql-kafka依赖下载失败问题
核心原因
macOS下Spark默认的Maven镜像存在网络访问限制,导致kafka-clients、lz4-java等依赖Jar包拉取失败;而Windows环境可能因代理或镜像配置差异可正常下载。
解决方案
1. 启动SparkSession时指定国内Maven镜像
在Jupyter Notebook中初始化SparkSession时,直接配置阿里云Maven镜像,绕开默认仓库的网络问题:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("KafkaStreaming") \ .config("spark.jars.packages", "org.apache.spark:spark-sql-kafka-0-10_2.12:3.4.0") \ .config("spark.repo.local", "/Users/你的用户名/.m2/repository") # 替换为你的本地Maven仓库路径 .config("spark.maven.repo.url", "https://maven.aliyun.com/repository/public") \ .getOrCreate()
如果本地没有.m2/repository目录,手动创建即可。
2. 手动下载依赖Jar包并加载
若镜像配置仍无效,直接下载对应版本的Jar包(从Maven仓库搜索对应版本):
spark-sql-kafka-0-10_2.12-3.4.0.jarkafka-clients-3.4.0.jarlz4-java-1.8.0.jarsnappy-java-1.1.10.1.jar(部分场景需额外依赖)
下载完成后,启动SparkSession时指定Jar包路径:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("KafkaStreaming") \ .config("spark.jars", "/path/to/spark-sql-kafka.jar,/path/to/kafka-clients.jar,/path/to/lz4-java.jar") \ .getOrCreate()
注意路径用逗号分隔,不要加空格。
3. 配置Spark全局默认镜像
不想每次启动都重复配置的话,修改Spark的spark-defaults.conf文件:
- 找到PySpark安装目录下的
conf文件夹,复制spark-defaults.conf.template为spark-defaults.conf - 添加以下配置:
spark.maven.repo.url=https://maven.aliyun.com/repository/public spark.repo.local=/Users/你的用户名/.m2/repository
修改后重启Jupyter Notebook即可生效。
验证依赖是否生效
初始化SparkSession后,执行以下代码测试:
df = spark.readStream \ .format("kafka") \ .option("kafka.bootstrap.servers", "localhost:9092") \ .option("subscribe", "test_topic") \ .load() df.printSchema()
能正常打印Schema则说明依赖加载成功。
内容的提问来源于stack exchange,提问作者Diego Gallo
相关产品推荐
相关产品推荐

