我在spark中写了一个简单的程序来写入一个数据框到mySql中的表中。Spark:线程“main”中的异常java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
的程序如下:
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.Driver
你应该了解这一点呢?
我一直在eclipse上使用maven插件,并没有过这个问题。这是否意味着一个简单的“maven install”来创建一个胖罐子是不够的?我不想去'--jars'路由,因为所有的执行者(或其他URI)都必须有那个jar –
不,安装选项是不够的。除非你想一个接一个地安装你的所有依赖。 – eliasah
关于maven插件,我实际上并不了解你在评论中说的是什么。我提到了用于构建超级jar的程序集插件(作为许多人之一),我也向你分享了它的链接:-) – eliasah