想⽤impala-shell 命令⾏中将查询的结果导出到本地⽂件,想当然的以为impala 和 hive ⼀样可以⽤ insert overwrite local directory
‘/’ select ……. 这样的命令导出到本地,执⾏了⼀下,发现impala 不⽀持这个。
然后查了⼀下,发现impala-shell 可以像mysql ⼀样的⽅式导出查询结果到⽂件。在命令⾏⾥带参数执⾏,例如:
impala-shell -q "select * from table limit 10" -B --output_delimiter="\t" -
1
impala-shell 还有其他很多参数,可以impala-shell -h 查看,下⾯是别⼈翻译的,copy过来供⼤家参考 :
选项
描述
-
grid serviceB 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 查询。⽂件内容必须以分号分隔span80
-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 会提⽰输⼊密码