将 spark 数据帧写入 mysql table 时出错
Error writing spark dataframe to mysql table
我尝试将 spark 数据帧的内容写入 mysql table。但是我总是收到以下错误:
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"))
但是,将数据帧写入 table 不起作用:
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
class 是 com.mysql.jdbc.Driver
。假设其余设置正确:
prop.setProperty("driver", "com.mysql.jdbc.Driver")
我尝试将 spark 数据帧的内容写入 mysql table。但是我总是收到以下错误:
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"))
但是,将数据帧写入 table 不起作用:
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
class 是 com.mysql.jdbc.Driver
。假设其余设置正确:
prop.setProperty("driver", "com.mysql.jdbc.Driver")