2017-11-15 9 views
0

私は(org.apache.hive.jdbc.HiveDriver)とC3P0com.mchange.v2.c3p0.ComboPooledDataSource)を使用しようとしています。私はこれの例外だ:なぜHiveConnectionはgetHoldability()をサポートしていませんか? HiveDriverでC3P0を使用する

java.sql.SQLException: Method not supported 
at org.apache.hive.jdbc.HiveConnection.getHoldability(HiveConnection.java:924) 
at com.mchange.v2.c3p0.impl.NewPooledConnection.<init>(NewPooledConnection.java:106) 
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:159) 

を私はHiveConnectionのソースコード(here

/* 
* (non-Javadoc) 
* 
* @see java.sql.Connection#getHoldability() 
*/ 

@Override 
public int getHoldability() throws SQLException { 
    // TODO Auto-generated method stub 
    throw new SQLFeatureNotSupportedException("Method not supported"); 
} 

マイ質問が見つかりました:なぜHiveConnectionSQLFeatureNotSupportedExceptionをスローすることを選択したのでしょうか?これらのうちの1つを返す代わりに?

ResultSet.HOLD_CURSORS_OVER_COMMIT 
ResultSet.CLOSE_CURSORS_AT_COMMIT 

これはバグですか?一般的に

、それは(私が実際にSpark SQLを使用しています)Hiveで などC3P0などの接続プールを使用することは可能でしょうか?

アップデート1(2017年11月15日)

私はちょうど(org.apache.commons.dbcp2.BasicDataSourcedbcp2を試してみました、それが働きました。私は何とかdbcp2Connection#getHoldability()メソッドを呼び出さないと思います。

+1

でこのバグの影響を受けていないいくつかの理由() 'を返します。しかし、なぜ推測を求めているのか、私たちに尋ねる。 Hiveドライバの作成者にバグを報告する必要があります。 –

+1

よろしくお願いいたします。私はApacheにバグレポートHIVE-18082を提出しました:https://issues.apache.org/jira/browse/HIVE-18082 – leeyuiwah

答えて

0

(私はここで自分の質問に答えるのです。)マーク・Rotteveelの提案のための

おかげで、私は今も、問題が本当にバグだと思います。私はApacheにバグ報告HIVE-18082(here)を提出しました。

バグが修正される前に、一時的な回避策の1つはC3P0ではなく、別の接続プール(DBCP2)を使用することです。前者はConnection#getHoldability()の電話をかけることはありませんので、JDBCの仕様では、ドライバが `` Connection.getHoldabilityためSQLFeatureNotSupportedException`をスローすることはできませんので、それは技術的にバグであるHiveConnection

関連する問題