Hive和Impala作爲數據查詢工具,它們是怎樣來查詢數據的呢?與Impala和Hive進行交互,我們有哪些工具可以使用呢?
我們首先明確Hive和Impala分別提供了對應查詢的接口:
(1)命令行shell:
1、 Impala:impala shell
2、 Hive:beeline(早期hive的命令行版本是hive shell,現在基本不使用)
(2)Hue Web UI:
1.Hue裏面提供了 Hive查詢編輯器
2.Hue裏面提供了Impala查詢編輯器
3.Hue裏面提供了元數據管理器,可以直接對元數據進行訪問。
(3)提供了JDBC和ODBC支持
下面進行具體介紹:
一、Impala
(1)使用Impala shell
Impala shell是類似於MySQL的交互式工具,可以直接在終端啓動Impala shell,但是Impala shell在哪裏啓動很有講究。Impala本身是分佈式的架構,它的Impalad是在每個slave節點中的。那麼Impala按照如下這種情況直接執行的話肯定是在slave節點中運行的。
如果不是在slave節點中運行的話,可以指定它的server,像如下這種方式,通過—i的參數,指定21000端口執行。
Impala shell和所有的SQL一樣,輸入分號作爲語句的結束,使用quit命令退出shell。如果需要查看幫助的話使用impala-shell --help查看完整的選項列表。因爲任何的工具它的參數都是很多的,一定要習慣和學會使用幫助去找到自己想要的一些參數,然後去解決一些複雜數據的分析和處理。
在Impala shell裏面執行查詢的示例:
(2)Impala與操作系統進行交互
在Impala裏面,我們有時候需要去執行一些Linux的命令,比如查詢日期,遠程連接,訪問目錄數據等,我們不需要退出Impala shell,直接操作就可以,比如:
但是Impala不直接支持HDFS命令,但是可以使用shell運行hdfs dfs命令去創建一個目錄,如下:
(3)從命令行運行Impala查詢,可以不用登陸Impala shell就可以執行,如:
1、 使用-f選項來執行包含查詢的文件
2、 使用-q選項直接在命令行運行查詢
3、 使用-o來將結果輸出到文件
二、Hive
(1)啓動beeline
Hive shell是Hive早期版本,現在使用Beeline shell,跟Impala shell相似,但是它是基於JDBC和ODBC,如果需要使用Beeline的話,需要去啓動Hive2,通過爲Hive2服務器指定URL來啓動Beeline,這個時候還需要根據需要指定用戶名和密碼,如下:
(2)在Beeline執行查詢
和SQL一樣以分號結束,執行查詢和Impala shell類似,但結果格式有少許不同,如:
(3)使用Beeline
和其他工具有一些不同,執行查詢都是正常的SQL輸入,但是如果是一些管理的命令,比如進行連接,中斷,退出,執行Beeline命令需要帶上“!”,不需要終止符。常用命令介紹:
1、!connect url –連接不同的Hive2服務器
2、!exit –退出shell
3、!help –顯示全部命令列表
4、!verbose –顯示查詢追加的明細
示例:
(4)從命令行執行Hive查詢
1、使用-f選項來執行包含HiveQL代碼的文件
2、使用-e選項直接在命令行運行HiveQL
3、使用--silent來阻止通知的消息輸出,也可以和-e或-f選項一起使用
三、Hue
(1)通過Hue訪問Hive和Impala,它們各自都有editors,在Hue的query editors裏面我們可以找到Hive和Impala的一些工具,
如下:
以及元數據庫我們可以在Data Browsers裏面可以看到它的一些工具,如:
(2)Hue查詢編輯器,查詢Impala和Hive查詢編輯器幾乎相同,具體操作示意:
與Impala和Hive進行交互,以上就是我們可以利用和使用的工具,但是在實際的操作中我們還需要加強自己的實戰能力才能更好的去掌握和理解。大數據作爲當下還在不斷完善發展的技術,需要每一位想要從事和已經從事它的人員不斷去學習和積累,更需要去交流和分享,共同進步。“大數據cn”、“大數據時代學習中心”是我平時自己在自主學習過程中找到微信服務號,裏面介紹的關於大數據的知識以及大數據發展的一些行業知識都很不錯,平常大家可以看看。