如何通过Impala Shell将带库切换的查询结果保存为CSV文件
解决Impala Shell执行多语句并导出结果的问题
嘿,我刚好碰到过这个场景!其实Impala Shell完全支持在单个-q参数里执行多条SQL语句,只需要用分号把它们分隔开就行,根本不用分开操作。而且导出结果到桌面也很简单,用命令行重定向就能搞定。
直接用单条命令实现
你可以把切换库和查询语句放在同一个-q的引号里,然后加上导出参数:
impala-shell -q "USE test; SELECT * FROM teams;" -B --output_delimiter="\t" > ~/Desktop/teams_query_result.tsv
我来拆解下每个部分的作用:
-q "USE test; SELECT * FROM teams;":Impala会按顺序执行分号分隔的两条语句,先切换到test库,再执行查询-B:启用批量模式,去掉查询结果里的格式化表头、边框和多余空格,适合导出纯数据--output_delimiter="\t":指定输出的分隔符,这里用制表符,你也可以改成逗号,适配CSV格式> ~/Desktop/teams_query_result.tsv:把查询结果重定向到你桌面的指定文件里
复杂场景用SQL脚本文件
如果你的SQL语句更多、更复杂,建议把它们写到一个脚本文件里,比如创建query_script.sql:
USE test; -- 这里可以添加更多SQL语句 SELECT * FROM teams;
然后用-f参数执行脚本并导出:
impala-shell -f query_script.sql -B > ~/Desktop/teams_result.tsv
小提示
如果你的Impala集群需要Kerberos认证,记得在命令里加上-k参数;如果要指定Impala daemon的地址,用-i <impalad_host:port>就行。
内容的提问来源于stack exchange,提问作者user6203336
相关产品推荐
相关产品推荐

