Hive CLI和Beeline的差別-Hive vs Beeline
Beeline主要是開發來與新伺服器進行互動。Hive CLI是基于 Apache Thrift的用戶端,而Beeline是基于SQLLine CLI的JDBC用戶端。在本文中,我們将詳細闡述Hive CLI和Beeline用戶端之間的差別.
以下是Hive CLI和Beeline用戶端之間的一些差別。如果您從舊的Hive CLI遷移到新的Beeline用戶端,了解它們之間的差別将會對您有所幫助
1.Server Connection
- Hive CLI
Hive CLI使用HiveServer1。Hive CLI使用Thrift協定連接配接到遠端Hiveserver1執行個體。要連接配接到伺服器,必須指定主機名。端口号是可選的。
$hive -h <host_name> -p <port>
- Beeline
Beeline使用JDBC連接配接到遠端HiveServer2執行個體。連接配接參數包括JDBC URL。
$ beeline -u <url> -n <username> -p <password>
2.互動模式
- Hive CLI
在Hive CLI互動模式中,可以執行任何HiveQL查詢語句:
hive> show databases;
OK
Default
test_db
也可以執行任何shell指令
hive> !more myfile.txt;
This is a test file.hive>
- Beeline
在Beeline中也可以像Hive CLI中一樣執行HiveQL
$ beeline -u jdbc:hive2://
Connecting to jdbc:hive2://
18/01/03 10:47:45 [main]: WARN service.CompositeService: Unable to create operation log root directory: /tmp/hive/operation_logs
Connected to: Apache Hive (version 1.2.1000.2.5.0.0-1245)
Driver: Hive JDBC (version 1.2.1000.2.5.0.0-1245)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 1.2.1000.2.5.0.0-1245 by Apache Hive
0: jdbc:hive2://>
0: jdbc:hive2://> show tables;
OK
+----------------------------------------+--+
| database_name |
+----------------------------------------+--+
|Default |
| test_db |
+----------------------------------------+--+
也可以使用"!"來執行Beeline指令而不是shell指令:
beeline> !connect jdbc:hive2://
Connecting to jdbc:hive2://
Enter username for jdbc:hive2://: username
Enter password for jdbc:hive2://: *******
18/01/03 10:51:03 [main]: WARN service.CompositeService: Unable to create operation log root directory: /tmp/hive/operation_logs
Connected to: Apache Hive (version 1.2.1000.2.5.0.0-1245)
Driver: Hive JDBC (version 1.2.1000.2.5.0.0-1245)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://>
“!quit”是退出Beeline用戶端的指令
0: jdbc:hive2://> !q
Closing: 0: jdbc:hive2://
$
3.嵌入模式
嵌入模式是測試代碼最最佳和最便捷的方式之一。HiveCLI和Beeline均支援嵌入模式。
- Hive CLI
隻需要輸入hive指令而不添加任何參數就可以以嵌入模式啟動Hive CLI:
$ hive
- Beeline
為了在嵌入模式中啟動Beeline用戶端,需要指定一個連接配接URLjdbc:hive2://
$ beeline -u jdbc:hive2://
4.HiveQL 查詢執行
查詢語句的執行在Hive CLI和Beeline中是一樣的。
- Hive CLI
$ hive -e <query in quotes>$ hive -f <query file name>
- Beeline
$ beeline -e <query in quotes>$ beeline -f <query file name>
在上述兩種情況中,如果不提供-e和-f選項,用戶端将進入互動模式。
5.變量替代
Hive CLI和Beeline均支援變量替代
- Hive CLI
你可以使用set指令設定變量并将其作為參數傳遞給腳本:
$ hive --hiveconf var=value -e 'set var; set hiveconf:var; select * from table where col = ${hiveconf:var}'
- Beeline
可以-hivevar變量傳遞值給腳本檔案
$ beeline -u jdbc:hive2://hive_server:10000/test_db -n username -p password --hivevar var1=value -f file.sql