不多說,直接上干貨!
查看幫助文檔
impala-shell -h
刷新整個雲數據
impala-shell -r
use impala;
show tables;
去格式化,查詢大數據量時可以提高性能
impala-shell -B
show tables;
則,效果就跟hive效果一樣了。
去格式化時顯示列名
impala-shell -B --print_header
show tables;
指定分隔符
impala-shell -B --output_delimiter
impala-shell -B --print_header --output_delimiter
查看對應版本
impala-shell -v
執行查詢文件(常用)
impala-shell -f
常常把sql語句寫到某文件中。
比如vi test.tst
select * from impala.res limit 5;
注意,impala是我的數據庫,res是這個數據庫里的表。
impala-shell -f test.tst
或者
impala-shell --query_file = test.txt
這種語句的作用,跟sql語句里的作用是一樣的。
連接對應的impalad服務
impala-shell -i
impala-shell -- impalad
impala-shell --fe_port
保存結果執行到文件
impala-shell -o
impala-shell -o --output_file
impala-shell -o result.txt --query_file=test.txt
impala-shell -B --print_header -o result.txt --query_file=test.txt
result.txt
impala-shell -B -o result.txt --query_file=test.txt
result.txt
執行某一用戶運行impala-shell
impala-shell -u
顯示執行計划
impala-shell -p
不能進入impala-shell執行查詢
impala-shell -q
使用kerberos安全加密方式運行impala-shell
impala-shell -k
忽略錯誤語句繼續執行
impala-shell -c
使用LDAP協議進行訪問
impala-shell -l
指定進入某一個數據庫
impala-shell -d
幫助選項
impala-shell;
help
增量刷新
impala-shell;
refresh
摘要: http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/ciiu_shell_options.html
impala-shell 命令行選項
你可以在啟動 impala-shell 時設置以下選項,用於修改命令執行環境。

這些選項與 impalad 守護進程的配置選項不同。關於 impalad 選項,參見 Modifying Impala Startup Options。
選項 |
描述 |
---|---|
-B or --delimited |
導致使用分隔符分割的普通文本格式打印查詢結果。當為其他 Hadoop 組件生成數據時有用。對於避免整齊打印所有輸出的性能開銷有用,特別是使用查詢返回大量的結果集進行基准測試的時候。使用 --output_delimiter 選項指定分隔符。使用 -B 選項常用於保存所有查詢結果到文件里而不是打印到屏幕上。在 Impala 1.0.1 中添加 |
--print_header |
是否打印列名。整齊打印時是默認啟用。同時使用 -B 選項時,在首行打印列名 |
-o filename or --output_file filename |
保存所有查詢結果到指定的文件。通常用於保存在命令行使用 -q 選項執行單個查詢時的查詢結果。對交互式會話同樣生效;此時你只會看到獲取了多少行數據,但看不到實際的數據集。當結合使用 -q 和 -o 選項時,會自動將錯誤信息輸出到 /dev/null(To suppress these incidental messages when combining the -q and -o options, redirect stderr to /dev/null)。在 Impala 1.0.1 中添加 |
--output_delimiter=character |
當使用 -B 選項以普通文件格式打印查詢結果時,用於指定字段之間的分隔符(Specifies the character to use as a delimiter between fields when query results are printed in plain format by the -B option)。默認是制表符 tab ('\t')。假如輸出結果中包含了分隔符,該列會被引起且/或轉義( If an output value contains the delimiter character, that field is quoted and/or escaped)。在 Impala 1.0.1 中添加 |
-p or --show_profiles |
對 shell 中執行的每一個查詢,顯示其查詢執行計划 (與 EXPLAIN 語句輸出相同) 和發生低級故障(low-level breakdown)的執行步驟的更詳細的信息 |
-h or --help |
顯示幫助信息 |
-i hostname or --impalad=hostname |
指定連接運行 impalad 守護進程的主機。默認端口是 21000。你可以連接到集群中運行 impalad 的任意主機。假如你連接到 impalad 實例通過 --fe_port 標志使用了其他端口,則應當同時提供端口號,格式為 hostname:port |
-q query or --query=query |
從命令行中傳遞一個查詢或其他 shell 命令。執行完這一語句后 shell 會立即退出。限制為單條語句,可以是 SELECT, CREATE TABLE, SHOW TABLES, 或其他 impala-shell 認可的語句。因為無法傳遞 USE 語句再加上其他查詢,對於 default 數據庫之外的表,應在表名前加上數據庫標識符(或者使用 -f 選項傳遞一個包含 USE 語句和其他查詢的文件) |
-f query_file or --query_file=query_file |
傳遞一個文件中的 SQL 查詢。文件內容必須以分號分隔 |
-k or --kerberos |
當連接到 impalad 時使用 Kerberos 認證。如果要連接的 impalad 實例不支持 Kerberos,將顯示一個錯誤 |
-s kerberos_service_name or --kerberos_service_name=name |
Instructs impala-shell to authenticate to a particular impalad service principal. 如何沒有設置 kerberos_service_name ,默認使用 impala。如何啟用了本選項,而試圖建立不支持 Kerberos 的連接時,返回一個錯誤(If this option is used in conjunction with a connection in which Kerberos is not supported, errors are returned) |
-V or --verbose |
啟用詳細輸出 |
--quiet |
關閉詳細輸出 |
-v or --version |
顯示版本信息 |
-c |
查詢執行失敗時繼續執行 |
-r or --refresh_after_connect |
建立連接后刷新 Impala 元數據,與建立連接后執行 REFRESH 語句效果相同 |
-d default_db or --database=default_db |
指定啟動后使用的數據庫,與建立連接后使用 USE 語句選擇數據庫作用相同,如果沒有指定,那么使用 default 數據庫 |
-l | 啟用 LDAP 認證 |
-u | 當使用 -l 選項啟用 LDAP 認證時,提供用戶名(使用短用戶名,而不是完整的 LDAP 專有名稱(distinguished name)) ,shell 會提示輸入密碼 |
1、Impala 外部 Shell
Impala外部Shell 就是不進入Impala內部,直接執行的ImpalaShell 例如通過外部Shell查看Impala幫助可以使用: $ impala-shell -h 這樣就可以查看了;
再例如顯示一個SQL語句的執行計划: $ impala-shell -p select count(*) from t_stu
下面是Impala的外部Shell的一些參數:
• -h (--help) 幫助
• -v (--version) 查詢版本信息
• -V (--verbose) 啟用詳細輸出
• --quiet 關閉詳細輸出
• -p 顯示執行計划
• -i hostname (--impalad=hostname) 指定連接主機格式hostname:port 默認端口21000
• -r(--refresh_after_connect)刷新所有元數據
• -q query (--query=query) 從命令行執行查詢,不進入impala-shell
• -d default_db (--database=default_db) 指定數據庫
• -B(--delimited)去格式化輸出
• --output_delimiter=character 指定分隔符
• --print_header 打印列名
• -f query_file(--query_file=query_file)執行查詢文件,以分號分隔
• -o filename (--output_file filename) 結果輸出到指定文件
• -c 查詢執行失敗時繼續執行
• -k (--kerberos) 使用kerberos安全加密方式運行impala-shell
• -l 啟用LDAP認證
• -u 啟用LDAP時,指定用戶名
2、Impala內部Shell
使用命令 $ impala-sehll 可以進入impala,在這里可以像Hive一樣正常使用SQL,而且還有一些內部的impala命令:
• help
• connect <hostname:port> 連接主機,默認端口21000
• refresh <tablename> 增量刷新元數據庫
• invalidate metadata 全量刷新元數據庫
• explain <sql> 顯示查詢執行計划、步驟信息
• set explain_level 設置顯示級別(0,1,2,3)
• shell <shell> 不退出impala-shell執行Linux命令
• profile (查詢完成后執行) 查詢最近一次查詢的底層信息
例:查看幫助可以直接使用: help ,要刷新一個表的增量元數據可以使用 refresh t_stu;