Mysql 火花连接器

Mysql 火花连接器,mysql,apache-spark,jdbc,Mysql,Apache Spark,Jdbc,我正在从spark应用程序(spark-2.0.0-bin-hadoop2.7)连接到MySql数据库。在连接时,我发现以下错误 这是我的密码: def main(args: Array[String]) { val conf = new SparkConf() .setAppName("LoadMySql") .setMaster("local[*]") .set("spark.sql.warehouse.dir", "file:///C:/temp")

我正在从spark应用程序(spark-2.0.0-bin-hadoop2.7)连接到MySql数据库。在连接时,我发现以下错误

这是我的密码:

def main(args: Array[String]) {

    val conf = new SparkConf()
    .setAppName("LoadMySql")
    .setMaster("local[*]")
    .set("spark.sql.warehouse.dir", "file:///C:/temp")

    val spark = SparkSession
    .builder
    .config(conf)
    .getOrCreate()

    val option = Map("url" -> "jdbc://mysql://IPAddress:3306/TestDB", "dbtable" -> "Users", "user" -> "root", "password" -> "*****")

    val dataRDD = spark.sqlContext.read.format("org.apache.spark.sql.jdbc").options(option).load()
错误:

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Exception in thread "main" java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(Unknown Source)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$2.apply(JdbcUtils.scala:54)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$2.apply(JdbcUtils.scala:54)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.createConnectionFactory(JdbcUtils.scala:53)
    at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:123)
    at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:117)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:53)
    at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:315)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:149)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:122)
    at com.Lab.SparkAPI.LoadMySql$.main(LoadMySql.scala:26)
    at com.Lab.SparkAPI.LoadMySql.main(LoadMySql.scala)
使用Spark的默认log4j配置文件:org/apache/Spark/log4j-defaults.properties
线程“main”java.sql.SQLException中的异常:没有合适的驱动程序
位于java.sql.DriverManager.getDriver(未知源)
位于org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$2.apply(JdbcUtils.scala:54)
位于org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$2.apply(JdbcUtils.scala:54)
位于scala.Option.getOrElse(Option.scala:121)
位于org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.createConnectionFactory(JdbcUtils.scala:53)
位于org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:123)
位于org.apache.spark.sql.execution.datasources.jdbc.jdbcreation.(jdbcreation.scala:117)
位于org.apache.spark.sql.execution.datasources.jdbc.jdbrelationprovider.createRelation(jdbrelationprovider.scala:53)
位于org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:315)
位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:149)
位于org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:122)
在com.Lab.SparkAPI.LoadMySql$.main上(LoadMySql.scala:26)
位于com.Lab.SparkAPI.LoadMySql.main(LoadMySql.scala)
我已经通过添加外部jar将mysql-connector-java-5.1.27-bin.jar包含到我的eclipse项目中

我试过两种不同版本的罐子,但到目前为止运气不好

知道我需要连接到MySQL的版本吗


[编辑]

最后,我能够从MySQL连接并加载数据

我做了以下2个设置

  • 将DBName.*上的所有权限授予由“密码”标识的“根”@“%”
  • 修改/etc/mysql/mysql.conf.d/mysqld.cnf以在[mysqld]部分下注释#bind address=127.0.0.1

这个问题得到了回答

我想您正在使用Scala作为编程语言。您没有提供足够的信息,例如您用于连接MySQL的代码。无论如何,看起来您还没有为MySQL指定任何驱动程序。试试看:

  • 将MySQL导入到您的项目中

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.39</version>
    </dependency>
    

  • 希望能有所帮助。

    在调用DriverManager.getConnection之前,您可以尝试加载MySql驱动程序类吗请不要在这里的注释中发布这么长的代码示例。若你们更新你们的问题会更好:)不管怎样,我的方法对你们有用吗?我已经在我的项目中包含了jar文件,这还不够吗?在Scala项目中手动导入库不是一个好做法,最好使用Maven或SBT之类的工具来实现这一目的。无论如何,请确保库已正确导入到项目中。