Use commons-dbutils with hive-jdbc

この記事は【2016年10月1日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

hive-jdbcと一緒にcommons-dbutilsを使う場合。

環境

  • commons-dbutils 1.6
  • hive-jdbc-1.1.0-cdh5.7.1

DbUtilsでgetParameterMetaDataの呼び出しをスキップ

hive-jdbcと一緒にcommons-dbutilsを使う場合、hive-jdbcではjava.sql.PreparedStatement#getParameterMetaData()をサポートしていない(上記環境でのバージョン)ので、以下のようにQueryRunnerの初期化時にgetParameterMetaDataをサポートしていない旨を渡してあげる必要があります。

以下は、org.apache.commons.dbutils.AbstractQueryRunner#fillStatementの呼び出し部分で、QueryRunner#queryメソッドの内部で呼ばれます。

pmdKnownBrokenがtrueの場合はパラメータ数のチェック処理がスキップされます。QueryRunnerの初期化時に該当変数にtrueを指定しなかった場合、hive-jdbcではgetParameterMetaDataの呼び出しで例外がスローされ以下のようなエラーが表示されます。

参考リンク

  • https://commons.apache.org/proper/commons-dbutils/apidocs/index.html
  • https://issues.apache.org/jira/browse/HIVE-6992
  • https://github.com/apache/hive/blob/master/jdbc/src/java/org/apache/hive/jdbc/HivePreparedStatement.java#L209
カテゴリー: hadoop | タグ: | 投稿日: | 投稿者:

byebyehaikikyou について

産業機械系エンジニア→アフィリエイトWeb広告系のアプリ開発→PostgreSQL周辺機能の開発→企画開発(現在ここ) 地方でITエンジニアをしています。Webやスマフォアプリ、Hadoopなどのビッグデータに関するシステムに関わり、現在は企画開発などの業務。 日々のインプットを発信してます。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください