我使用c3po连接jdbc(impala),但它失败了。你能给我帮助吗:))
ConnectPool.scala
class ConnectPool extends Serializable{
private val cpds: ComboPooledDataSource = new ComboPooledDataSource(true)
private val conf = Utils.getPropmap("env.properties")
try {
cpds.setJdbcUrl(conf("kudu.produce.url"))
cpds.setDriverClass(conf("jdbc.driver"))
cpds.setMaxPoolSize(400)
cpds.setMinPoolSize(20)
cpds.setAcquireIncrement(5)
cpds.setMaxStatements(380)
} catch {
case e: Exception => e.printStackTrace()
}
def getConnection: Connection = {
try {
return cpds.getConnection()
} catch {
case ex: Exception =>
ex.printStackTrace()
null
}
}
}
object ConnectManager {
var kuduManager: ConnectPool = _
def getConnectManager: ConnectPool = {
synchronized {
if (kuduManager == null) {
kuduManager = new ConnectPool
}
}
kuduManager
}
}
messages.foreachRDD(rdd => {
val conn = ConnectManager.getConnectManager.getConnection
val stmt = conn.createStatement
if(!rdd.isEmpty() && rdd.count() >0){
//初始化spark
val spark = SparkSession.builder.config(rdd.sparkContext.getConf).getOrCreate()
try{
// use stmt
}catch {
case e: Exception => print("\ntest\n")
} finally {
stmt.close()
conn.close()}
}
})
18/03/16 16:56:00 INFO c3p0.SQLWarnings: [Simba] ImpalaJDBCDriver错误设置默认连接 属性值:{0} java.sql.SQLWarning: [Simba] ImpalaJDBCDriver错误设置默认连接 属性值:{0} 在com.cloudera.jdbc.common.SWarningListener.createSQLWarning(未知 资源) 在com.cloudera.jdbc.common.SWarningListener.postWarning(未知来源) 在com.cloudera.jdbc.common.SConnection。(未知来源) 在com.cloudera.jdbc.common4.C4SConnection。(未知来源) 在com.cloudera.jdbc.jdbc41.S41Connection。(未知来源) 在com.cloudera.impala.jdbc41.ImpalaJDBC41Connection。(未知 资源) 在com.cloudera.impala.jdbc41.ImpalaJDBC41ObjectFactory.createConnection(未知 资源) 在com.cloudera.jdbc.common.BaseConnectionFactory.doConnect(未知 资源) 在com.cloudera.jdbc.common.AbstractDriver.connect(未知来源) 在com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:119) 在com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143) 在com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132
答案 0 :(得分:1)
您看到的输出是警告,而不是错误。 c3p0重置并打印Connection在将其检入池之前遇到的任何警告。这有时令开发人员感到惊讶,因为很少有开发人员费心去检查警告,因此他们经常被忽视。
我完全不知道这个警告意味着什么。但JDBC连接警告通常发生在非严重的情况下。除警告输出外,您的应用程序是否正常工作?
如果您决定接受警告,可以通过配置特殊记录器com.mchange.v2.c3p0.SQLWarnings
来重定向或关闭它们。将此记录器的日志级别设置为比INFO更严重的任何内容将阻止这些消息的出现。