私はHDMSデータストアに対してsqlのようなクエリを実行するためにHive JDBCドライバを使用しています。私は接続プールを処理するためにc3p0を使用しようとしています。私はそれが正しいアプローチであると確信していません。なぜなら、Hiveクエリはかなり長い時間がかかることがあります。つまり、接続がプールに戻されずにかなり長く保持されることを意味します。 c3p0構成の接続も同様です。Hive JDBC接続をプールするベストプラクティス
ハイブjdbc接続をプールするベストプラクティスはありますか? c3p0? DBCP?
MAX_POOL_SIZEはどうですか?それはRDBの通常の設定よりも大きいでしょうか?
ありがとうございました。私はここでも少し混乱しています.10個のJDBC接続をハイブにプーリングすると、10個のハイブジョブを並列に開くことができますか?仕事が終わったらどうなりますか?そのJDBC接続はプールに戻されますか?次回は、新しいクエリでjdbc接続が行われ、新しいハイブジョブが作成されます。ここでjdbc接続プーリングを使用すると、jdbc接続の作成/削除だけでどのような利点がありますか? – Shengjie
これまでに理解してきたことは、MySqlや、Hiveがメタストアとして使用したDBMSに複数の接続を開くことができますが、複雑なクエリを起動すると、ハイブはMapReduceジョブを作成してあなたのケースではHDFSにあるHive倉庫の結果です。 –
続き...私はプールのような糸のようなものを使用した。私はクラスタの容量に応じてサーバをハイブロスするために10スレッド接続を予約しています。クエリは、「従業員からの名前の選択」が1つのスレッドを消費すると言っています。そのような別のクエリは、もう1つのスレッドを占有するなどと言います。クエリが終了すると、そのクエリに関連付けられたスレッドをスレッドのプールに戻す(チェックイン)。 –