1. 程式人生 > >Impala Shell 簡單命令

Impala Shell 簡單命令

目錄

1.更新元資料

2.對查詢結果去格式化

3.查詢結果儲存到檔案

4.去格式化後指定分隔符

5.-p或者--show-profiles:顯示查詢的執行計劃(與EXPLAIN語句輸出相同)和每個查詢語句底層的執行步驟的詳細資訊.

6.指定主機名連線 (-i)

7.執行查詢語句

8.指定指令碼檔案執行SQL

9.-r或者--refresh_after_connect

10 -k或者-kerberos

11.-s或者-kerberos_service_name

12.-V或者-verbose

13.-quiet

14.-v或者-version

15.-c:

16.-d或者--database-

17.表的統計分析 

 18.欄位的統計分析


 

1.更新元資料

invalidate metadata;
對於通過Hive載入,插入,改變的資料操作,或者通過hdfs命令對資料檔案進行的變更操作,
Impala都無法自動識別資料的變更情況.如果想讓Impala識別到這些變化,
在連線到impala-shell後,首先要做的操作就是REFRESH table_name,該語句會讓lmpala識別到資料的變更情況.

2.對查詢結果去格式化

> impala-shell -B

3.查詢結果儲存到檔案

  • 使用 -o 將查詢結果儲存到txt檔案中後會提示編碼問題,如下
[[email protected] ~]$ impala-shell -o 0502.txt -q ' select * from sina_weibo limit 1;'
Starting Impala Shell without Kerberos authentication
Connected to test101:21000
Server version: impalad version 2.11.0-cdh5.14.0 RELEASE (build d68206561bce6b26762d62c01a78e6cd27aa7690)
Query: select * from sina_weibo limit 1
Query submitted at: 2018-05-02 17:19:30 (Coordinator: http://test101:25000)
Query progress can be monitored at: http://test101:25000/query_plan?query_id=2e4528016c46ebfa:4ce8e72a00000000
Unknown Exception : 'ascii' codec can't encode characters in position 1834-1835: ordinal not in range(128)
Could not execute command: select * from sina_weibo limit 1
  • 解決方案
1. 查詢我們執行的impala-shell具體內容

[[email protected] impala]# whereis impala-shell
impala-shell: /usr/bin/impala-shell
[[email protected] impala]# vim /usr/bin/impala-shell

2. 我們發現impala-shell會執行 impala_shell.py 
PYTHONPATH="${EGG_PATH}${SHELL_HOME}/gen-py:${SHELL_HOME}/lib:${PYTHONPATH}" \
  exec python ${SHELL_HOME}/impala_shell.py "[email protected]"

3. 查詢impala_shell.py ,設定編碼為utf-8
[[email protected] impala]# find / -name 'impala_shell.py'
/opt/cloudera/parcels/CDH-5.14.0-1.cdh5.14.0.p0.24/lib/impala-shell/impala_shell.py


> import sys  
> reload(sys)  
> sys.setdefaultencoding('utf-8')  

4. 再次執行結果出來

4.去格式化後指定分隔符

--output delimiter-:該選項對使用-B選項去格式化輸出的查詢結果指定各欄位間的分,隔符.預設的分隔符為製表鍵('\t'),如果輸出欄位中包含了分隔符字元,這個欄位將使用/進行 轉義.

[test101:21000] > select uid,gender,city from offline_user2 limit 5;
Query: select uid,gender,city from offline_user2 limit 5
Query submitted at: 2018-05-04 20:23:52 (Coordinator: http://test101:25000)
Query progress can be monitored at: http://test101:25000/query_plan?query_id=254620554e7f3de7:3b47e8e600000000
5887898482,女,海口
6013580396,男,NULL
3485070663,男,NULL
6081748563,男,深圳
5903926726,男,商丘
Fetched 5 row(s) in 0.19s

5.-p或者--show-profiles:顯示查詢的執行計劃(與EXPLAIN語句輸出相同)和每個查詢語句底層的執行步驟的詳細資訊.

6.指定主機名連線 (-i)

-i或者-imapad-:後面接主機名用來指定連線到指定的impalad節點.
預設的連線埠為21000,我們可以使用該命令連線到叢集中任何一臺impalad節點上.
如果Impala啟動時使用了備用埠,則需要使用--fe-port選項標識.

7.執行查詢語句

-q或者-query-:該選項用於執行一個查詢語句或者shell命令.
Impala不必等待查詢或者shell執行結束即可返回.這裡的查詢僅限於像SELECT, CREATE TABLE, SHOW TABLES等單條的語句.
因為USE語句是一條單獨的SQL語句,而這個選項只能指定單條語句,
所以如果物件沒有字首只能訪問default資料庫,如果要訪問其他資料庫就必須指定資料庫名稱作為字首.

8.指定指令碼檔案執行SQL

-f或者-query-file-:這個選項後面可以跟一個SQL查詢指令碼檔案,
指令碼檔案中的SQL必須使用";"來分隔.

> cat query.sql
use default;
select  from student;
select mf, count (*) from student group by mf;
> impala-shell -f query.sql

9.-r或者--refresh_after_connect

連線後重新整理Impala元資料資訊.效果和連線之後執行REFRESH語句相同.

10 -k或者-kerberos

該選項用來指定當shell連線到impalad節點時使用kerberos身份驗證.但是如果impalad節點本身沒有啟用kerberos,連線將會報錯.

11.-s或者-kerberos_service_name

該選項後面跟kerberos服務名稱讓impala-shell驗證一個特定的impalad服務.如果沒有指定kerberos服務名稱,將使用impala作為預設的名稱.如果
該選項用於一個不支援kerberos的連線,將會返回錯誤.

12.-V或者-verbose

啟用詳細資訊輸出.

13.-quiet

禁用詳細資訊輸出.

14.-v或者-version

顯示版本資訊.

15.-c:

如果查詢失敗繼續執行.

16.-d或者--database-

該選項後面跟上資料庫的名稱用於連線到指定的資料庫.該選項的效果和連線上之後執行USE的效果相同.如果不指定該選項,將連線到系統預設的default資料庫.

17.表的統計分析 

[test03:21000] namespace1> show table stats tableName;
Query: show table stats tableName
+-----------------+----------------------------------+------------+----------+
| Region Location | Start RowKey                     | Est. #Rows | Size     |
+-----------------+----------------------------------+------------+----------+
| test01          |                                  | 1290769    | 833.00MB |
| test01          | 3c9f93135954c1c22bba09a549b9db4d | 1288975    | 904.00MB |
| test02          | 7ff81356e5d100ca91cda300bd4b11ed | 1191259    | 890.00MB |
| test03          | c1c3ace151cad4ebb62f55d952b17d83 | 1183541    | 855.00MB |
| Total           |                                  | 4954544    | 3.40GB   |
+-----------------+----------------------------------+------------+----------+
Fetched 5 row(s) in 0.57s

18.欄位的統計分析