Я написал простую программу в искры, чтобы написать dataframe в таблицу в 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 явно для запуска этого кода. Я получаю сообщение об ошибке:
Исключение в потоке «основной» java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Что должно быть сделано по этому поводу?
Я использую плагин maven на затмении и раньше не имел этих проблем. Означает ли это, что простой «maven install» для создания толстой банки недостаточно? Я не хочу идти на маршрут '--jars', потому что все исполнители (или какой-то другой URI) должны были бы иметь эту банку –
Нет, опции установки недостаточно. Если вы не хотите устанавливать все свои зависимости на своих подчиненных один за другим. – eliasah
Что касается плагина maven, я не понимаю, о чем вы говорите в комментарии. Я упомянул плагин сборки (как один из mavens many), который будет использоваться для сборки uber-jar, и я поделился с вами ссылкой на него :-) – eliasah