Apache Impala(三) Impala-shell 命令
1.impala-shell 外部命令
所谓的外部命令指的是不需要进入到 impala-shell 交互命令行当中即可执行 的命令参数。impala-shell 后面执行的时候可以带很多参数。你可以在启动 impalashell 时设置,用于修改命令执行环境。
impala-shell –h
可以帮助我们查看帮助手册。也可以参考课程附件资料。
impala-shell –r
刷新 impala 元数据,与建立连接后执行 REFRESH 语句效果相同
impala-shell –f 文件路径
执行指的的 sql 查询文件。
impala-shell –i
指定连接运行 impalad 守护进程的主机。 默认端口是 21000。你可以连接到集群中运行 impalad 的任意主机。
impala-shell –o
保存执行结果到文件当中去。
![](https://img.haomeiwen.com/i13369429/2dd5dcc38cf186c6.jpg)
2.impala-shell 内部命令
所谓内部命令是指,
进入 impala-shell 命令行之后可以执行的语法连接到指定的机器 impalad 上去执行。
![](https://img.haomeiwen.com/i13369429/7f75303d80b9a004.jpg)
connect hostname
连接到指定的机器 impalad 上去执行。
![](https://img.haomeiwen.com/i13369429/5286e166ffdd9c80.jpg)
refresh dbname.tablename
增量刷新,刷新某一张表的元数据,主要用 于刷新 hive 当中数据表里面的数据改变的情况。
![](https://img.haomeiwen.com/i13369429/6f88372f2990a763.jpg)
invalidate metadata
全量刷新,性能消耗较大,主要用于 hive 当中新 建数据库或者数据库表的时候来进行刷新。
quit/exit 命令
从 Impala shell 中弹出
explain 命令
用于查看 sql 语句的执行计划。
![](https://img.haomeiwen.com/i13369429/12edf87de4fe2471.jpg)
explain 的值可以设置成 0,1,2,3 等几个值,其中 3 级别是最高的,可以打印 出最全的信息
set explain_level=3;
profile 命令
执行 sql 语句之后执行,可以 打印出更加详细的执行步骤,主要用于查询结果的查看,集群的调优等。
![](https://img.haomeiwen.com/i13369429/6264d16892431426.jpg)
注意
如果在 hive 窗口中插入数据或者新建的数据库或者数据库表,那 impala 当中是不可直接查询,需要执行 invalidate metadata 以通知元数据的更新;
在 impala-shell 当中插入的数据,在 impala 当中是可以直接查询到的,不需 要刷新数据库, 其中使用的就是 catalog 这个服务的功能实现的, catalog 是 impala1.2 版本之后增加的模块功能,主要作用就是同步 impala 之间的元数据。
更新操作通知 Catalog,Catalog 通过广播的方式通知其它的 Impalad 进程。 默认情况下 Catalog 是异步加载元数据的,因此查询可能需要等待元数据加载完 成之后才能进行(第一次加载)。