【问题标题】:ERROR when get data from mysql to Apache Spark (scala)从 mysql 获取数据到 Apache Spark (scala) 时出错
【发布时间】:2019-12-02 13:57:26
【问题描述】:

我想从 mysql 获取数据到 Spark (scala),但是当它发生错误时

com.mysql.cj.jdbc.exceptions.CommunicationsException:通信 链接失败

这是我的代码:

val sqlcontext = new org.apache.spark.sql.SQLContext(sc)

val cataDF= sqlcontext.read.format("jdbc").option("url", "jdbc:mysql://127.0.0.1:3360/crawldb").option("driver", "com.mysql.jdbc.Driver").option("dbtable", "tblcategory").option("user", "root").option("password", "19031980").load()

这是错误

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
  at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
  at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
  at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
  at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455)
  at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
  at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199)
  at org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper.connect(DriverWrapper.scala:45)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:63)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$1.apply(JdbcUtils.scala:54)
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:56)
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:115)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:52)
  at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:340)
  at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:239)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:227)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:164)
  ... 49 elided
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

我不知道我的错误是什么, 我曾经通过此代码成功获取数据,现在不是!请帮帮我!

【问题讨论】:

    标签: mysql dataframe apache-spark bigdata


    【解决方案1】:

    这通常意味着它无法连接到mysql服务器

    能否确保服务器可达,检查天气主机和锅是否正确

    option("url", "jdbc:mysql://127.0.0.1:3360/crawldb")
    

    你能确定端口是3360吗?通常它应该是3306,除非你改变了它。

    【讨论】:

    • 哦嗬!谢谢你的回答!可能是端口不正确。我有数据。
    猜你喜欢
    • 1970-01-01
    • 2016-08-25
    • 2020-12-29
    • 2020-07-28
    • 2015-01-20
    • 1970-01-01
    • 2016-03-25
    • 2018-05-04
    • 1970-01-01
    相关资源
    最近更新 更多