spark毗连mysql报错--驱动问题py4j.protocol.Py4JJavaError: -com.mysql.jd ...

打印 上一主题 下一主题

主题 872|帖子 872|积分 2616

报错一

报错信息如下:
  1. py4j.protocol.Py4JJavaError: An error occurred while calling o96.save.
  2. : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
  3.         at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  4.         at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  5.         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  6.         at org.apache.spark.sql.execution.datasources.jdbc.DriverRegistry$.register(DriverRegistry.scala:46)
复制代码
或者如下报错:
  1. py4j.protocol.Py4JError: An error occurred while calling None.org.apache.spark.sql.SparkSession. Trace:
  2. py4j.Py4JException: Constructor org.apache.spark.sql.SparkSession([class org.apache.spark.SparkContext, class java.util.HashMap]) does not exist
  3.         at py4j.reflection.ReflectionEngine.getConstructor(ReflectionEngine.java:179)
  4.         at py4j.reflection.ReflectionEngine.getConstructor(ReflectionEngine.java:196)
  5.         at py4j.Gateway.invoke(Gateway.java:237)
  6.         at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
复制代码
上述错误提示表明在使用 py4j 协议时发生了问题, Java 层抛出了一个 ClassNotFoundException,找不到 com.mysql.jdbc.Driver 类。这可能是由于以下原因导致的:

  • MySQL 驱动未准确配置或未在类路径中。确保已将准确的 MySQL JDBC 驱动程序添加到 Java 项目的类路径中
  • 确认你使用的 MySQL 驱动版本与你的数据库版本和应用程序需求兼容
  • spark版本和pysaprk版本不一致。
排错

我在pycharm编写处理spark处理数据的代码中,想要将处理的结果输出(写入)到mysql,碰到了以上两个报错问题。我首先查抄了pyspark和spark的版本都是3.1.2,清除spark和pyspark版本不兼容的问题。其次查抄了我的mysql版本5.7.29与我的mysql驱动包是mysql-connector-java-5.1.32.jar,它们是兼容的。我也在saprk下的jars文件下上传了mysql驱动包,该目次为/export/server/spark/jars。但是运行代码还是报错,背面我把mysql驱动包复制到/root/anaconda3/lib/python3.8/site-packages/pyspark/jars,之子女码运行成功,写入数据到MySQL。
这里呢是由于,我使用anaconda摆设的python虚拟环境,在用pycharm毗连的spark,用的是pysaprk,所以要把驱动包放到anaconda3下的pysaprk下的jar文件下。具体路径根据自己的安装anaconda的位置来安装安装mysql驱动包(包括沙箱环境的环境)。
补充写入mysql的代码:

报错二

报错:not exist in the JVM
  1. py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.getEncryptionEnabled does not exist in the JVM
复制代码
对于这种报错,有两种可能:


  • Spark版本不兼容:PySpark的版本与Spark的版本不兼容可能导致此错误。确保使用相应版本的PySpark与Spark集群版本匹配。
  • 缺少环境变量:PySpark运行所需的某些环境变量未准确设置,可能导致此错误。这些环境变量包括SPARK_HOME和PYSPARK_PYTHON等。
办理办法

1.查抄spark与pysaprk版本是否兼容,假如不兼容,则重装pyspark。
2.查抄并设置准确的环境变量,使用pyspark需要设置一些环境变量。


  • SPARK_HOME:指向Spark的安装目次。
  • PYSPARK_PYTHON:指向Python表明器的路径。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表