簡體   English   中英

將Spark DataFrame寫入mysql表時出錯

[英]Error writing spark dataframe to mysql table

我嘗試將spark數據幀的內容寫入mysql表。 但是我總是收到以下錯誤:

java.sql.SQLException: No suitable driver found for 'URL' 

我正在使用spark-1.6.0。 對數據庫的查詢沒有任何問題:在正確設置之后,我可以運行查詢並毫無問題地得到結果。

val mysqlDriver = "Driver"
val mysqlUsername = "name"
val mysqlPwd = "pwd"
val mysqlUrl = "jdbc:mysql://myUrl" 
 val sqlContext = new org.apache.spark.sql.SQLContext(sc)
Class.forName(mysqlDriver).newInstance

val dataRDD = new JdbcRDD(sc, () =>
  DriverManager.getConnection(mysqlUrl, mysqlUsername, mysqlPwd) ,
  "a query",
  0,
  1000000,
  2,
  r => r.getString("something") + ", " + r.getString("somethingmore") + ", " + r.getString("somethingelse"))

但是,將數據框寫入表不起作用:

todb.insertIntoJDBC(mysqlUrl + "/db" + "?user=name&password=pwd", "table", false) 

由於此方法似乎已被棄用,因此我也嘗試過:

val prop = new java.util.Properties
prop.setProperty("user", mysqlUsername)
prop.setProperty("password",mysqlPwd)

嘗試了以下兩個版本:

prop.setProperty("driver", "/somedir/mysql-connector-java-5.1.37-bin.jar")
prop.setProperty("driver", "mysqlDriver")

和這兩個版本:

todb.write.jdbc(mysqlUrl + "/boosting" + "?user=mysqlUsername&password=mysqlPwd", "boosting.user_cluster", prop)
todb.write.jdbc(mysqlUrl, "table", prop) 

啟動spark-shell時,我還將驅動程序的jar作為–jars參數之一。 我進一步嘗試設置此:

val conf = new SparkConf().setJars(Array("somejar.jar", "/somedir/mysql-connector-java-5.1.37-bin.jar"))

在這個問題上的任何幫助將不勝感激!

MySQL的正確driver類是com.mysql.jdbc.Driver 假設其余設置正確:

prop.setProperty("driver", "com.mysql.jdbc.Driver")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM