java - 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 用户和密码,一切都正确。
谢谢你 。
解决方案
您面临的问题可能意味着数据库根本无法访问。这个问题可能是由于任何原因导致的,可能是 JDBC URL 中的 IP 地址或主机名错误,或者本地 DNS 服务器无法识别 JDBC URL 中的主机名,或者端口号可能丢失,或者 DB 服务器已关闭。可能有很多原因,所以我建议您再次检查您的方法并检查所有内容。通过终端连接并检查
推荐阅读
- python - 在 getTotalX 函数中查找错误。Python
- java - Java依赖对象序列化一致性
- php - (Intellij Idea PHP) 本地项目文件夹文件到本地服务器项目根目录的映射
- windows - Azure 中的 Windows 升级
- spring-boot - 尝试访问登录网址时,Spring OAuth2“需要完整身份验证才能访问此资源错误”
- c - 比较具有 2 个名称的字符串
- symfony - PHPUnit:不报告呈现给 HTTP 错误的 Symfony 异常
- c# - 用于多个查找表的 MVC 核心存储库模式
- docker-swarm - Traefik 上的整个 SSL 证书链
- r - [R] 中的索引表