火花流中的c3p0错误

时间:2018-03-16 09:21:14

标签: spark-streaming c3p0

我使用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
  }
}

main.scala

 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()}
      }

    })

out put

  

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

1 个答案:

答案 0 :(得分:1)

您看到的输出是警告,而不是错误。 c3p0重置并打印Connection在将其检入池之前遇到的任何警告。这有时令开发人员感到惊讶,因为很少有开发人员费心去检查警告,因此他们经常被忽视。

我完全不知道这个警告意味着什么。但JDBC连接警告通常发生在非严重的情况下。除警告输出外,您的应用程序是否正常工作?

如果您决定接受警告,可以通过配置特殊记录器com.mchange.v2.c3p0.SQLWarnings来重定向或关闭它们。将此记录器的日志级别设置为比INFO更严重的任何内容将阻止这些消息的出现。