天天看點

Hive CLI和Beeline的差別-Hive vs BeelineHive CLI和Beeline的差別-Hive vs Beeline

Hive CLI和Beeline的差別-Hive vs Beeline

  Beeline主要是開發來與新伺服器進行互動。Hive CLI是基于 Apache Thrift的用戶端,而Beeline是基于SQLLine CLI的JDBC用戶端。在本文中,我們将詳細闡述Hive CLI和Beeline用戶端之間的差別.

  以下是Hive CLI和Beeline用戶端之間的一些差別。如果您從舊的Hive CLI遷移到新的Beeline用戶端,了解它們之間的差別将會對您有所幫助

Hive CLI和Beeline的差別-Hive vs BeelineHive CLI和Beeline的差別-Hive vs 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
           

繼續閱讀