Pyspark运行报SQLException: No suitable Driver,配置jars后仍无法解决
PostgreSQL连接Spark报错
SQLException: No suitable driver 排查方案 - 首先校验JDBC连接字符串格式是否正确,必须携带协议前缀:
正确格式为jdbc:postgresql://<数据库地址>:<端口>/<数据库名>,缺失jdbc:postgresql://前缀是触发该报错的高频原因 - 检查驱动包路径有效性
确认你命令中填写的PostgreSQL驱动jar包绝对路径真实存在,且当前用户有读取权限;注意Spark官方不存在3.12版本,需确认你填写的Spark目录名是否为手误(比如应该为3.1.2/3.2.1等),路径错误会导致Spark实际未加载到驱动包 - 校验Python代码中环境变量的设置时机
os.environ['PYSPARK_SUBMIT_ARGS']配置必须写在导入pyspark相关模块之前,先导入pyspark再设置该环境变量不会生效 - 确认spark-defaults配置是否生效
你提到的spark-default template是模板文件,不会被Spark加载,需要将模板文件复制重命名为spark-defaults.conf才会生效,且需正确配置两个参数:spark.driver.extraClassPath /Users/my_user/tools/spark-3.12-bin-hadoop3.2/jars/postgresql-42.2.23.jar spark.executor.extraClassPath /Users/my_user/tools/spark-3.12-bin-hadoop3.2/jars/postgresql-42.2.23.jar - 显式指定JDBC驱动类名
在Spark写JDBC连接配置时,主动添加driver选项:df = spark.read.format("jdbc") \ .option("url", "你的JDBC连接串") \ .option("dbtable", "表名") \ .option("user", "用户名") \ .option("password", "密码") \ .option("driver", "org.postgresql.Driver") \ .load() - 最简验证方案
直接将postgresql-42.2.23.jar文件复制到Spark安装目录的jars文件夹下,重启Spark服务后重新运行任务,该方案可避开所有classpath配置问题
内容的提问来源于stack exchange,提问作者cocktail Enthusiast
相关产品推荐
相关产品推荐

