【轉載出處】http://blog.csdn.net/jobschen/article/details/68942574
想用impala-shell 命令行中將查詢的結果導出到本地文件,想當然的以為impala 和 hive 一樣可以用 insert overwrite local directory ‘/home/test.txt’ select ……. 這樣的命令導出到本地,執行了一下,發現impala 不支持這個。
然后查了一下,發現impala-shell 可以像mysql 一樣的方式導出查詢結果到文件。在命令行里帶參數執行,例如:
impala-shell -q "select * from table limit 10" -B --output_delimiter="\t" -o testimpalaoutput.txt
- 1
impala-shell 還有其他很多參數,可以impala-shell -h 查看,下面是別人翻譯的,copy過來供大家參考 :
| 選項 |
描述 |
|---|---|
| -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 會提示輸入密碼 |
參數內容引用自:
https://my.oschina.net/weiqingbin/blog/190929
更多精彩內容,歡迎掃碼關注以下微信公眾號:大數據技術宅。大數據、AI從關注開始
