ToB企服应用市场:ToB评测及商务社交产业平台

标题: spark毗连mysql报错--驱动问题py4j.protocol.Py4JJavaError: -com.mysql.jd [打印本页]

作者: 水军大提督    时间: 2024-11-26 20:56
标题: spark毗连mysql报错--驱动问题py4j.protocol.Py4JJavaError: -com.mysql.jd
报错一

报错信息如下:
  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 类。这可能是由于以下原因导致的:
排错

我在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
复制代码
对于这种报错,有两种可能:

办理办法

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



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




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4