当前位置: 首页 > 知识库问答 >
问题:

Spark:异常在线程"main"java.lang.ClassNotFound异常:com.mysql.jdbc.驱动程序

卫开济
2023-03-14

我在spark中编写了一个简单的程序,在mySql中向表中写入一个数据帧。

计划如下:

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.hive.HiveContext

import org.apache.spark.SparkContext._
import org.apache.spark.rdd._
//import org.apache.spark.rdd.RDD

import org.apache.spark.sql.types._
import org.apache.spark.sql.Row;

import java.util.Properties

import java.sql.{ Connection, DriverManager, SQLException }

object MySQLTrial {
  def main(args: Array[String]) {
    val sparkConf = new SparkConf().setAppName("AnalyseBusStreaming")
    val sc = new SparkContext(sparkConf)
    val df = sc.parallelize(Array((1, 234), (2, 1233)))
    val sqlContext = new org.apache.spark.sql.SQLContext(sc)
    import sqlContext.implicits._
    val prop = new Properties()
    prop.put("user", "admin")
    prop.put("password", "admin")

    val driver = "com.mysql.jdbc.Driver"
    Class.forName(driver)
    val dfWriter = df.toDF().write.mode("append")
    dfWriter.jdbc("jdbc:mysql://127.0.0.1:3306/IOT_DB", "table1", prop)
  }
}

我的项目的POM文件如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ggi.bigdata</groupId>
    <artifactId>internet_of_things</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.10</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_2.10</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
    </dependencies>
</project>

我运行这个程序使用火花提交(尝试在本地和纱线模式)。我没有显式包含任何jar文件来运行此代码。我一直得到错误:

线程“main”java中出现异常。lang.ClassNotFoundException:com.mysql。jdbc。驾驶员

对此该怎么办?

共有2个答案

浦出野
2023-03-14

埃利亚萨是对的。M2Eclipse确实创建了一个jar文件,但它不是fat/uber jar。如果我在eclipse上显式安装“maven assembly”插件,我就能够创建一个包含依赖项jar的胖jar,从而运行程序。

池俊茂
2023-03-14

这是因为你提交给集群的uber jar中没有你的驱动程序,无论它是独立集群还是纱线或mesos等等。

解决方案1:因为您使用的是maven,所以可以使用assembly插件来构建uber jar,其中包含所有需要的依赖项。有关maven assembly插件的更多信息,请点击此处。

解决方案2:使用--jars选项提交应用程序时,在运行时提供这些依赖项库。我建议您阅读官方文档中有关高级依赖关系管理和提交应用程序的更多信息。

e、 g它可以是这样的:

./bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --jars /path/to/mysql-connector-java*.jar

我希望这有帮助!

 类似资料:
  • 我正尝试使用Spark 2.0.2从hbase数据库(1.2.5)中获取数据,此页面中的代码为:https://github.com/apache/hbase/blob/master/hbase-spark/src/main/java/org/apache/hadoop/hbase/Spark/example/hbaseContext/javahbasebulkgetexample.java 但我

  • 最近我正在学习Spring框架。所以我正在尝试检查依赖注入在Spring框架中的工作原理。因此,我创建了一个新的java项目并使用基于构造函数XML的配置练习依赖注入代码。运行我的项目后,我收到了这个错误...... 类路径资源[com/mir00r/beans.XML]的XML文档中的第24行无效;嵌套异常为组织。xml。萨克斯。SAXParseException;行号:24;列数:9;cvc复

  • 我正在学习selenium并尝试运行以下代码,但它引发了异常。NoSuchFieldError:空字节数组。请帮助我理解这个简单的程序出了什么问题。 控制台: 异常线程"main"java.lang.NoSuchFieldError:EMPTY_BYTE_ARRAY

  • 我在Windows 10上使用Netbean上的JDK 14。在IDE环境中一切正常。但是,当我尝试从命令提示符编译和运行源文件时,我得到了。 系统变量中的PATH和CLASSPATH包含,。 如果我从命令提示符发出java-version,在java_主目录中,我会得到以下结果: 如果我从java_HOME\bin目录发布java-version,我会收到下面列出的另一条消息: 我不确定为什么?

  • 我正在看一张桌子。其中一列包含压缩(二进制)数据。我正在解压缩这些数据并存储在另一个RDD中。它给出了以下错误: 线程“main”组织中出现异常。阿帕奇。火花SparkException:作业因阶段失败而中止:阶段2.0中的任务0失败1次,最近的失败:阶段2.0中的任务0.0丢失(TID 2,localhost,executor driver):java。util。同时发生的ExecutionEx

  • 我正在尝试创建一个实用程序类,以使用 java.util.扫描仪从标准控制台获取输入 在另一个类中调用静态方法时, 工作正常,但是下面的方法 会导致异常。 运行此命令会导致以下异常 我注意到的有趣的事情是,如果我注释掉第一个输入过程,数组输入工作正常。