通过JDBC直接读取数据库中的数据。当sparkjdbcinsert锁超时为了保证数据库内的数据不会减少或删除,可以通过JDBC直接读取数据库中的数据,这个特性是基于JdbcRDD实现。返回值作为DataFrame返回,这样可以直接使用SparkSQL并跟其他的数据源进行join *** 作。
你应该配置了C3PO数据库连接池。错误提示你连接池获取数据库连接超时了,你应该查看以下你的数据库连接配置文件(我看你用了Hibernate,应该在Hibernatecfgxml中,或者你集成到applicationcontextxml)中了。确定一下数据库连接地址,用户名,密码是否争取。
你指的是JDBC连接池连接超时失效问题的问题吧?
这是因为mysql默认保持连接的时间是8小时,如果这个连接在8小时内无人访问的话,就会关闭这个连接。但是连接池设计的时候没有考虑到这个问题,还把失效的连接拿出去就会导致出现异常。
解决方法:
1、创建一个线程每隔一段时间就测试一下连接,保持连接时最新的,永远达不到8小时无人访问。
2、连接池取连接的时候判定是否这个连接有效。
[java] view plain copy
if (connisValid(1000)){
return conn;
}
else{
return thisCreateConnection();
}
3、不使用连接池,直接拿了就用,用了就还。
连接池的概念:
用池来管理Connection,这可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。
JDBC数据库连接池接口(DataSource):
Java为数据库连接池提供了公共的接口:javaxsqlDataSource,各个厂商可以让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池!
以上就是关于spark jdbc insert 锁超时全部的内容,包括:spark jdbc insert 锁超时、Initializing Spring root WebApplicationContext 后就报错关于底层数据库连接JDBC的连接问题..、为什么会出现JDBC连接池的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)