首页 > 解决方案 > java中的Spark MySQL连接器

问题描述

我想连接 spark 和 MySQL。我尝试了以下代码:

public class Get_Data_From_MySQL implements Serializable {

private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(Get_Data_From_MySQL.class);

private static final String MYSQL_CONNECTION_URL = "jdbc:mysql://localhost:3306/test";
private static final String MYSQL_USERNAME = "root";
private static final String MYSQL_PWD = "";

private static final SparkSession sparkSession =
        SparkSession.builder().master("local[*]").appName("Spark2JdbcDs").getOrCreate();

public static void main(String[] args) {
    //JDBC connection properties
    final Properties connectionProperties = new Properties();
    connectionProperties.put("user", MYSQL_USERNAME);
    connectionProperties.put("password", MYSQL_PWD);
    connectionProperties.put("driver", "com.mysql.jdbc.Driver");
    final String dbTable =
            "(select age from employe";
      //Load MySQL query result as Dataset
    Dataset<Row> jdbcDF =
            sparkSession.read()
                    .jdbc(MYSQL_CONNECTION_URL, dbTable, "age", 10001, 499999, 10, connectionProperties);

我收到此错误:

Exception in thread "main" java.sql.SQLException: Communication link failure: Mauvais 'handshake'
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:659)

在这一行:

Dataset<Row> jdbcDF =sparkSession.read().jdbc(MYSQL_CONNECTION_URL, dbTable, "age", 10001, 499999, 10, connectionProperties);

我检查了 MySQL 用户和密码,一切都正确。

谢谢你 。

标签: javamysqlapache-sparkintellij-idea

解决方案


您面临的问题可能意味着数据库根本无法访问。这个问题可能是由于任何原因导致的,可能是 JDBC URL 中的 IP 地址或主机名错误,或者本地 DNS 服务器无法识别 JDBC URL 中的主机名,或者端口号可能丢失,或者 DB 服务器已关闭。可能有很多原因,所以我建议您再次检查您的方法并检查所有内容。通过终端连接并检查


推荐阅读