Hiệp Bạch
Hiệp Bạch

Reputation: 53

ERROR when get data from mysql to Apache Spark (scala)

I want to get data from mysql to Spark (scala), but when It occurred an error

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

This is my code:

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()

And this is Error

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.

I don't know what my mistakes, I used to get data successfully by this code and now is not! Please help me!

Upvotes: 0

Views: 1922

Answers (1)

koiralo
koiralo

Reputation: 23109

This generally means it could not connect to the mysql server

Can you make sure that the server is reachable, check weather host and pots are correct

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

Can you make sure the port is 3360? Nomally it should be 3306 unless you have changed it.

Upvotes: 3

Related Questions