JDBCによるHive Server 2の接続
JDBCでHive Server 2を接続するには、まずJDBC接続に必要なJARパッケージを用意します.
最後の2つを追加しないと、次のエラーが発生する可能性があります.
ステップ1:JDBC接続にはドライバ、urlなどの情報を設定する必要があります.
リンクURL
Apache公式wikiでは、接続URLの詳細についてのヘルプがあります
The HiveServer2 URL is a string with the following syntax:
where
dbName is the name of the initial database.
hive_conf_list is a semicolon separated list of key=value pairs of Hive configuration variables for this session
hive_var_list is a semicolon separated list of key=value pairs of Hive variables for this session.
説明する複数のサーバインスタンスの場合、$HIVE_であることを前提として、カンマでサーバを分離できます.HOME/conf/hive-site.xmlにdynamicを配置する.service.discovery initFileについては、スクリプトをコマンドに書くことができ、デフォルトではこのスクリプトを実行します.これはHive 2に属します.2.0以降の機能 hive_についてconf_list当URLにhiveが入っていませんconf_list、すなわちフォーマットは以下の である.
コードは次のとおりです. hive_についてvar_list
URLにsess_が含まれている場合var_リスト、以下のとおりです.
接続コードは
ステップ2:反射メカニズムによるドライバの取得
ステップ3:接続の確立
ステップ4:statementの作成
ステップ5:SQLスクリプトの準備
ステップ6:statement実行スクリプト
ステップ7、結果セットの処理
ステップ8 statementを閉じる
ステップ9、接続を閉じる
注:statementとconnectionを閉じるには、例外をスナップします.プロセス全体はtry/catch/finallyで完了し、クローズ例外処理をfinallyに配置できます.
詳細は、リファレンスドキュメントを使用してくださいhttps://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients
C:\Program Files\DbVisualizer\jdbc\hive\commons-logging-1.1.3.jar
C:\Program Files\DbVisualizer\jdbc\hive\hadoop-common-2.3.0-cdh5.1.3.jar
C:\Program Files\DbVisualizer\jdbc\hive\hive-common-0.12.0-cdh5.1.3.jar
C:\Program Files\DbVisualizer\jdbc\hive\hive-exec-0.12.0-cdh5.1.3.jar
C:\Program Files\DbVisualizer\jdbc\hive\hive-jdbc-0.12.0-cdh5.1.3.jar
C:\Program Files\DbVisualizer\jdbc\hive\hive-metastore-0.12.0-cdh5.1.3.jar
C:\Program Files\DbVisualizer\jdbc\hive\hive-service-0.12.0-cdh5.1.3.jar
C:\Program Files\DbVisualizer\jdbc\hive\libfb303-0.9.0.jar
C:\Program Files\DbVisualizer\jdbc\hive\log4j-1.2.16.jar
C:\Program Files\DbVisualizer\jdbc\hive\slf4j-api-1.7.5.jar
C:\Program Files\DbVisualizer\jdbc\hive\slf4j-log4j12-1.7.5.jar
C:\Program Files\DbVisualizer\jdbc\hive\httpclient-4.2.5.jar
C:\Program Files\DbVisualizer\jdbc\hive\httpcore-4.2.5.jar
最後の2つを追加しないと、次のエラーが発生する可能性があります.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpRequestInterceptor
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.simon.HiveJDBCTest.main(HiveJDBCTest.java:33)
Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpRequestInterceptor
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 4 more
ステップ1:JDBC接続にはドライバ、urlなどの情報を設定する必要があります.
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
リンクURL
private static String url = "jdbc:hive2://:/" ;
private static String url = "jdbc:hive2://:/?mapred.job.queue.name=" ;
private static String url = "jdbc:hive2://:/?mapred.job.queue.name=;hive.mapred.mode=nonstrict" ;
Apache公式wikiでは、接続URLの詳細についてのヘルプがあります
The HiveServer2 URL is a string with the following syntax:
jdbc:hive2://<host1>:<port1>,<host2>:<port2>/dbName;initFile=<file>;sess_var_list?hive_conf_list#hive_var_list
where
: ,:
is a server instance or a comma separated list of server instances to connect to (if dynamic service discovery is enabled). If empty, the embedded server will be used. dbName is the name of the initial database.
is the path of init script file (Hive 2.2.0 and later). This script file is written with SQL statements which will be executed automatically after connection. This option can be empty. hive_conf_list is a semicolon separated list of key=value pairs of Hive configuration variables for this session
hive_var_list is a semicolon separated list of key=value pairs of Hive variables for this session.
説明する
<property>
<name>hive.server2.support.dynamic.service.discoveryname>
<value>truevalue>
property>
private static String url = "jdbc:hive2://:/?mapred.job.queue.name=;hive.mapred.mode=nonstrict" ;
コードは次のとおりです.
conn = DriverManager.getConnection(url, user,password );
URLにsess_が含まれている場合var_リスト、以下のとおりです.
private static String url = "jdbc:hive2://:/;username=username;password=password?mapred.job.queue.name=;hive.mapred.mode=nonstrict" ;
接続コードは
conn = DriverManager.getConnection(url);
ステップ2:反射メカニズムによるドライバの取得
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
}
ステップ3:接続の確立
conn = DriverManager.getConnection(url, user,password);
conn = DriverManager.getConnection(url);
ステップ4:statementの作成
stmt = conn.createStatement();
ステップ5:SQLスクリプトの準備
, :
sql = "show tables";
, test
sql = "select count(1) from test";
ステップ6:statement実行スクリプト
res = stmt.executeQuery(sql);
ステップ7、結果セットの処理
while(res.next()) {
System.out.println(res.getString(1));
}
ステップ8 statementを閉じる
if (stmt != null) {
stmt.close();
stmt = null;
}
ステップ9、接続を閉じる
if (conn != null) {
conn.close();
conn = null;
}
注:statementとconnectionを閉じるには、例外をスナップします.プロセス全体はtry/catch/finallyで完了し、クローズ例外処理をfinallyに配置できます.
詳細は、リファレンスドキュメントを使用してくださいhttps://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients