Spark中连接Mysql

本文介绍了一个使用Scala编写的Spark连接MySQL的示例,并详细记录了遇到的错误“Communications link failure”及其解决过程。错误主要源于JDBC URL配置不当,通过检查数据库地址、端口号及服务器状态等解决了问题。

在开发中涉及到spark连接到Mysql的部分操作,虽然要用scala进行编写,但是有过Java语言的一些基础上手scala并不是件难事…
以下为连接部分的代码,注意在使用前要引入相关的依赖,比如mysql的连接驱动等等,这些就不用我多BB了吧。示例demo:

def main(args: Array[String]): Unit = {
	val conf = new SparkConf().setAppName("test").setMaster("local")
	val sc = new SparkContext(conf)
	val sqlContext = new SQLContext(sc)
	val properties = new Properties()
	// 设置数据库用户名和密码
	properties.put("user","test")
	properties.put("password","test")
	// 注意自己所连数据库的地址
	val url = "jdbc:mysql://localhost:3306/test"
	// 对应的表名
	val test= sqlContext.read.jdbc(url,"test",properties)
	// 数据的展示
    test.show()
}

然而在我做好这些充分准备的时候,迫不及待的想连上数据库一看究竟,但是却遭到了无情的拒绝!!! 报错警告…
错误的原因如下:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
一顿操作猛如虎,难不成写法不对??? 在网上看了一些解决方案,但是好像不太适用。直到看到了这个老哥总结的,可能是因为自己的配置问题。

通信链路故障,则表示DB根本无法访问。 这可能有以下一个或多个原因:

  1. JDBC URL中的IP地址或主机名是错误的。 本地DNS服务器无法识别JDBC URL中的主机名。 JDBC URL中的端口号丢失或错误。 数据库服务器已关闭。 数据库服务器不接受TCP / IP连接。 数据库服务器已用完连接。
  2. Java和DB之间的某些东西阻止了连接,例如 防火墙或代理。

要解决这个问题,请遵循以下建议:

1.使用ping验证并测试它们。 刷新DNS或使用JDBC URL中的IP地址。 根据MySQL DB的my.cnf进行验证。 启动数据库。
2.验证是否在没有–skip-networking选项的情况下启动mysqld。 重新启动数据库并相应地修改代码,以便最终关闭连接。
3.禁用防火墙和/或配置防火墙/代理以允许/转发端口。
最后发现是自己连接数据库的ip写错了… 难受呀 吗啡!!!
感谢老哥的总结。。。
感谢老哥的总结。。。链接转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值