Impala Shell 简单命令

版权声明:原创文章,欢迎转载,转载请注明出处 https://blog.csdn.net/zhangshenghang/article/details/83993455

目录

1.更新元数据

2.对查询结果去格式化

3.查询结果存储到文件

4.去格式化后指定分隔符

5.-p或者--show-profiles:显示查询的执行计划(与EXPLAIN语句输出相同)和每个查询语句底层的执行步骤的详细信息.

6.指定主机名连接 (-i)

7.执行查询语句

8.指定脚本文件执行SQL

9.-r或者--refresh_after_connect

10 -k或者-kerberos

11.-s或者-kerberos_service_name

12.-V或者-verbose

13.-quiet

14.-v或者-version

15.-c:

16.-d或者--database-

17.表的统计分析 

 18.字段的统计分析


1.更新元数据

invalidate metadata;
对于通过Hive加载,插入,改变的数据操作,或者通过hdfs命令对数据文件进行的变更操作,
Impala都无法自动识别数据的变更情况.如果想让Impala识别到这些变化,
在连接到impala-shell后,首先要做的操作就是REFRESH table_name,该语句会让lmpala识别到数据的变更情况.

2.对查询结果去格式化

> impala-shell -B

3.查询结果存储到文件

  • 使用 -o 将查询结果保存到txt文件中后会提示编码问题,如下
[impala@test101 ~]$ impala-shell -o 0502.txt -q ' select * from sina_weibo limit 1;'
Starting Impala Shell without Kerberos authentication
Connected to test101:21000
Server version: impalad version 2.11.0-cdh5.14.0 RELEASE (build d68206561bce6b26762d62c01a78e6cd27aa7690)
Query: select * from sina_weibo limit 1
Query submitted at: 2018-05-02 17:19:30 (Coordinator: http://test101:25000)
Query progress can be monitored at: http://test101:25000/query_plan?query_id=2e4528016c46ebfa:4ce8e72a00000000
Unknown Exception : 'ascii' codec can't encode characters in position 1834-1835: ordinal not in range(128)
Could not execute command: select * from sina_weibo limit 1
  • 解决方案
1. 查找我们执行的impala-shell具体内容

[root@test101 impala]# whereis impala-shell
impala-shell: /usr/bin/impala-shell
[root@test101 impala]# vim /usr/bin/impala-shell

2. 我们发现impala-shell会执行 impala_shell.py 
PYTHONPATH="${EGG_PATH}${SHELL_HOME}/gen-py:${SHELL_HOME}/lib:${PYTHONPATH}" \
  exec python ${SHELL_HOME}/impala_shell.py "$@"

3. 查找impala_shell.py ,设置编码为utf-8
[root@test101 impala]# find / -name 'impala_shell.py'
/opt/cloudera/parcels/CDH-5.14.0-1.cdh5.14.0.p0.24/lib/impala-shell/impala_shell.py


> import sys  
> reload(sys)  
> sys.setdefaultencoding('utf-8')  

4. 再次执行结果出来

4.去格式化后指定分隔符

--output delimiter-:该选项对使用-B选项去格式化输出的查询结果指定各字段间的分,隔符.默认的分隔符为制表键('\t'),如果输出字段中包含了分隔符字符,这个字段将使用/进行 转义.

[test101:21000] > select uid,gender,city from offline_user2 limit 5;
Query: select uid,gender,city from offline_user2 limit 5
Query submitted at: 2018-05-04 20:23:52 (Coordinator: http://test101:25000)
Query progress can be monitored at: http://test101:25000/query_plan?query_id=254620554e7f3de7:3b47e8e600000000
5887898482,女,海口
6013580396,男,NULL
3485070663,男,NULL
6081748563,男,深圳
5903926726,男,商丘
Fetched 5 row(s) in 0.19s

5.-p或者--show-profiles:显示查询的执行计划(与EXPLAIN语句输出相同)和每个查询语句底层的执行步骤的详细信息.

6.指定主机名连接 (-i)

-i或者-imapad-:后面接主机名用来指定连接到指定的impalad节点.
默认的连接端口为21000,我们可以使用该命令连接到集群中任何一台impalad节点上.
如果Impala启动时使用了备用端口,则需要使用--fe-port选项标识.

7.执行查询语句

-q或者-query-:该选项用于执行一个查询语句或者shell命令.
Impala不必等待查询或者shell执行结束即可返回.这里的查询仅限于像SELECT, CREATE TABLE, SHOW TABLES等单条的语句.
因为USE语句是一条单独的SQL语句,而这个选项只能指定单条语句,
所以如果对象没有前缀只能访问default数据库,如果要访问其他数据库就必须指定数据库名称作为前缀.

8.指定脚本文件执行SQL

-f或者-query-file-:这个选项后面可以跟一个SQL查询脚本文件,
脚本文件中的SQL必须使用";"来分隔.

> cat query.sql
use default;
select  from student;
select mf, count (*) from student group by mf;
> impala-shell -f query.sql

9.-r或者--refresh_after_connect

连接后刷新Impala元数据信息.效果和连接之后执行REFRESH语句相同.

10 -k或者-kerberos

该选项用来指定当shell连接到impalad节点时使用kerberos身份验证.但是如果impalad节点本身没有启用kerberos,连接将会报错.

11.-s或者-kerberos_service_name

该选项后面跟kerberos服务名称让impala-shell验证一个特定的impalad服务.如果没有指定kerberos服务名称,将使用impala作为默认的名称.如果
该选项用于一个不支持kerberos的连接,将会返回错误.

12.-V或者-verbose

启用详细信息输出.

13.-quiet

禁用详细信息输出.

14.-v或者-version

显示版本信息.

15.-c:

如果查询失败继续执行.

16.-d或者--database-

该选项后面跟上数据库的名称用于连接到指定的数据库.该选项的效果和连接上之后执行USE的效果相同.如果不指定该选项,将连接到系统默认的default数据库.

17.表的统计分析 

[test03:21000] namespace1> show table stats tableName;
Query: show table stats tableName
+-----------------+----------------------------------+------------+----------+
| Region Location | Start RowKey                     | Est. #Rows | Size     |
+-----------------+----------------------------------+------------+----------+
| test01          |                                  | 1290769    | 833.00MB |
| test01          | 3c9f93135954c1c22bba09a549b9db4d | 1288975    | 904.00MB |
| test02          | 7ff81356e5d100ca91cda300bd4b11ed | 1191259    | 890.00MB |
| test03          | c1c3ace151cad4ebb62f55d952b17d83 | 1183541    | 855.00MB |
| Total           |                                  | 4954544    | 3.40GB   |
+-----------------+----------------------------------+------------+----------+
Fetched 5 row(s) in 0.57s

18.字段的统计分析

猜你喜欢

转载自blog.csdn.net/zhangshenghang/article/details/83993455