【转】Impala导出查询结果到文件
【轉載出處】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從關注開始轉載于:https://www.cnblogs.com/followees/p/7803094.html
總結
以上是生活随笔為你收集整理的【转】Impala导出查询结果到文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 练习10(图片题)
- 下一篇: Serenity安装和创建DEMO--学