HiveServer2是經常與beeline一起使用,可以用jdbc客戶端遠程連接,一般用於生產環境。 在提供傳統客服端的功能之外,還提供其他功能。 Beeline連接 啟動命令:HiveServer2 啟動日誌在hive.log中查看 命令: Beeline !connect jdbc:hive2 ...
HiveServer2是經常與beeline一起使用,可以用jdbc客戶端遠程連接,一般用於生產環境。
在提供傳統客服端的功能之外,還提供其他功能。
Beeline連接
1.先在hadoop集群啟動HiveServer2
啟動命令:HiveServer2
啟動日誌在hive.log中查看
2.再啟動Beeline
命令: Beeline
3.連接
!connect jdbc:hive2://localhost:10000
Beeline命令
傳統命令與Beeline命令示例比較:
1.傳統: quit;
2.Beeline: !quit
SQL語句操作還是和傳統一樣
HiveServer2 web界面管理
除了在HiveServer2服務端可以看到日誌,還可以在hive -site.xml中配置 ip埠後,可提供ui界面
<property>
<name>hive.server2.webui.host</name>
<value>localhost</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
JDBC連接
導入hive依賴包,hadoop-common及其相關依賴
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class HiveServerBeeline { // 驅動全名 private static String driverName = "org.apache.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { // TODO Auto-generated method stub try { // JVM查找並載入指定的類,也就是說JVM會執行該類的靜態代碼段 和 new 示例化對象類似 Class.forName(driverName); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(1); } // 連接並登陸資料庫 Connection con = DriverManager.getConnection("jdbc:hive2://192.192.192.192:10000/default", "user", "passwd"); // 創建Statement對象 Statement stmt = con.createStatement(); String sql = "show databases"; // stmt.execute("create external table if not exists testdb.test(id int,name String)"); ResultSet res = stmt.executeQuery(sql); int i = 1; if (res.next()) { System.out.println(res.getString(i)); i++; } }
沒導入hadoop-common依賴會報異常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration at org.apache.hive.jdbc.HiveConnection.createUnderlyingTransport(HiveConnection.java:418) at org.apache.hive.jdbc.HiveConnection.createBinaryTransport(HiveConnection.java:438) at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:225) at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:182) at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:107) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at hiveservertwo.HiveServerBeeline.main(HiveServerBeeline.java:32) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 8 more