首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花MySql连接器缸

火花MySql连接器缸
EN

Stack Overflow用户
提问于 2018-09-25 04:49:20
回答 1查看 2.2K关注 0票数 0

我正在从spark应用程序连接到一个MySql DB (星火-2.0.0-bin-hadoop2.7)。当连接时,我得到以下错误。

这是我的代码:

代码语言:javascript
复制
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()

错误:

代码语言:javascript
复制
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)

我已经通过添加外部Jars将mysql-连接器-java-5.1.27-bin.jar包含到了eclipse项目中。

我试过几种不同版本的jar,但到目前为止没有运气。

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

编辑

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

我做了两个以下的设定..。

  • 将DBName.*上的所有内容授予"root"@'%‘,由’密码‘标识;
  • 修改/etc/mysql/mysql.conf/mysqld.cnf,在mysqld部分下注释#bind= 127.0.0.1

here回答了这个问题

EN

回答 1

Stack Overflow用户

发布于 2018-09-25 05:55:08

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

  1. 将MySQL导入到proyect中 mysql -连接器-java 5.1.39
  2. 创建Properties对象,指定jdbc驱动程序。然后,使用此对象向MySQL写入/读取/从该对象写入/读取。 Prop.setProperty(“用户”,dbUser) prop.setProperty(“密码”,dbPassword) prop.put(“驱动程序”,"com.mysql.jdbc.Driver");df.write.mode(“追加”).jdbc(“jdbc:mysql:/+ dbHost + "/”+ dbName +“?rewriteBatchedStatements=true,"TABLE_NAME",支柱)

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52490748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档