|NO.Z.00007|——————————|BigDataEnd|——|Hadoop&Impala.V07|——|Impala.v07|使用操作.v01|

一、Impala的使⽤
### --- [交互查询工具Impala]

~~~     [Impala的使用-Impala-SQL语法]  
~~~     [Impala的使用-Impala-导入数据] 
### --- Impala的使用

~~~     # Impala的核心开发语言是sql语句,
~~~     Impala有shell命令行窗口,以及JDBC等方式来接收sql语句执行,
~~~     对于复杂类型分析可以使用C++或者Java来编写UDF函数。
~~~     # Impala的sql语法是高度集成了Apache Hive的sql语法,
~~~     Impala支持Hive支持的数据类型以及部分Hive的内置函数。
### --- 需要注意的⼏点:

~~~     # Impala与Hive类似它们的重点都是在与查询,
~~~     所以像Update,delete等具有更新性质的操作最好不要使⽤用这种工具,
~~~     对于删除数据的操作可以通过Drop Table,Alter Table Drop Partition来实现,
~~~     更新可以尝试使⽤用Insert overwrite方式
~~~     # 通常使用Impala的方式是数据文件存储在Hdfs文件系统,
~~~     借助于Impala的表定义来查询和管理Hdfs上的数据⽂件;

~~~     # Impala的使用大多数与Hive相同,
~~~     比如Impala同样支持内外部表,以及分区等,可以借鉴参考Hive的使用。
二、Impala-shell命令参数
### --- impala-shell外部命令

~~~     所谓的外部命令指的是不需要进入到impala-shell交互命令行当中即可执行的命令参数。
~~~     impala-shell后面执行的时候可以带很多参数。
~~~     你可以在启动 impala-shell 时设置,用于修改命令执行环境。
~~~     impala-shell –h可以帮助我们查看帮助手册。也可以参考课程附件资料。
### --- 比如几个常见的:

~~~     impala-shell –r刷新impala元数据,
~~~     与建立连接后执行 REFRESH 语句效果相同(元数据发生变化的时候)
~~~     impala-shell –f ⽂件路路径 执行指的的sql查询文件。
~~~     impala-shell –i指定连接行 impalad 守护进程的主机。默认端口是 21000。
~~~     你可以连接到集群中运行impalad 的任意主机。
~~~     impala-shell –o保存执行结果到文件当中去。
[root@linux121 ~]# impala-shell -r
***********************************************************************************
Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved.
(Impala Shell v2.5.0-cdh5.7.6 (ecbba4f) built on Tue Feb 21 14:54:50 PST 2017)

When you set a query option it lasts for the duration of the Impala shell session.
***********************************************************************************
[root@linux121 ~]# vim test.sql
show databases;
 
[root@linux121 ~]# impala-shell -f test.sql 
+------------------+----------------------------------------------+
| name             | comment                                      |
+------------------+----------------------------------------------+
| _impala_builtins | System database for Impala builtin functions |
| default          | Default Hive database                        |
| mydb             |                                              |
| mydb1            |                                              |
| mydb2            | this is mydb2                                |
+------------------+----------------------------------------------+
### --- 展示Impala默认支持的内置函数需要进入Impala默认系统数据库中执行
~~~     在其它数据库下无法查看!!

Query: show functions
+-------------+------------------------+-------------+---------------+
| return type | signature              | binary type | is persistent |
+-------------+------------------------+-------------+---------------+
| STRING      | mynvl1(STRING, STRING) | JAVA        | true          |
+-------------+------------------------+-------------+---------------+
### --- impala-shell内部命令所谓内部命令是指,进入impala-shell命令行之后可以执行的语法。

[linux121:21000] >  help;

Documented commands (type help <topic>):
========================================
compute   exit     history  quit    shell  unset   version
connect   explain  insert   select  show   use     with   
describe  help     profile  set     tip    values

Undocumented commands:
======================
alter  create  desc  drop  load  summary\
~~~     # connect hostname 连接到指定的机器impalad上去执行。

[linux121:21000] > connect linux122;
Connected to linux122:21000
Server version: impalad version 2.5.0-cdh5.7.6 RELEASE (build ecbba4f4e6d5eec6c33c1e02412621b8b9c71b6a)
~~~     # refresh dbname.tablename增量刷新,刷新某一张表的元数据,

~~~     主要用于刷新hive当中数据表里面的数据改变的情况。
~~~     invalidate metadata全量刷新,性能消耗较大,
~~~     主要用于hive当中新建数据库或者数据库表的时候来进行刷新。
~~~     quit/exit命令 从Impala shell中退出
~~~     explain 命令 用于查看sql语句的执行计划。
[linux122:21000] > refresh default.t1;
Query: refresh default.t1

Fetched 0 row(s) in 0.80s
Query: explain select * from t1
+------------------------------------------------------------------------------------+
| Explain String                                                                     |
+------------------------------------------------------------------------------------+
| Estimated Per-Host Requirements: Memory=32.00MB VCores=1                           |
| WARNING: The following tables are missing relevant table and/or column statistics. |
| default.t1                                                                         |
|                                                                                    |
| 01:EXCHANGE [UNPARTITIONED]                                                        |
| |                                                                                  |
| 00:SCAN HDFS [default.t1]                                                          |
|    partitions=1/1 files=1 size=186B                                                |
+------------------------------------------------------------------------------------+
~~~     # explain的值可以设置成0,1,2,3等几个值,其中3级别是最高的,
~~~     可以打印出最全的信息set explain_level=3;

[linux122:21000] > set explain_level =3;
EXPLAIN_LEVEL set to 3
[linux122:21000] > explain select * from t1;
Query: explain select * from t1
+------------------------------------------------------------------------------------+
| Explain String                                                                     |
+------------------------------------------------------------------------------------+
| Estimated Per-Host Requirements: Memory=32.00MB VCores=1                           |
| WARNING: The following tables are missing relevant table and/or column statistics. |
| default.t1                                                                         |
|                                                                                    |
| F01:PLAN FRAGMENT [UNPARTITIONED]                                                  |
|   01:EXCHANGE [UNPARTITIONED]                                                      |
|      hosts=1 per-host-mem=unavailable                                              |
|      tuple-ids=0 row-size=38B cardinality=unavailable                              |
|                                                                                    |
| F00:PLAN FRAGMENT [RANDOM]                                                         |
|   DATASTREAM SINK [FRAGMENT=F01, EXCHANGE=01, UNPARTITIONED]                       |
|   00:SCAN HDFS [default.t1, RANDOM]                                                |
|      partitions=1/1 files=1 size=186B                                              |
|      table stats: unavailable                                                      |
|      column stats: unavailable                                                     |
|      hosts=1 per-host-mem=32.00MB                                                  |
|      tuple-ids=0 row-size=38B cardinality=unavailable                              |
+------------------------------------------------------------------------------------+
~~~     # profile命令执行sql语句之后执行,可以打印出更加详细的执行步骤,
~~~     主要用于查询结果查看,集群的调优等。

[linux122:21000] > profile;
Query Runtime Profile:
Query (id=41451fbc1791d967:b74da1229e0c709d):
  Summary:
    Session ID: 9c48efc4ffcc449c:fcc9dc32ae6358c
    Session Type: BEESWAX
    Start Time: 2021-08-31 19:14:45.204131000
    End Time: 2021-08-31 19:14:45.224571000
    Query Type: EXPLAIN
    Query State: FINISHED
    Query Status: OK
    Impala Version: impalad version 2.5.0-cdh5.7.6 RELEASE (build ecbba4f4e6d5eec6c33c1e02412621b8b9c71b6a)
    User: root
    Connected User: root
    Delegated User: 
    Network Address: ::ffff:192.168.1.121:47936
    Default Db: default
    Sql Statement: explain select * from t1
    Coordinator: linux122:22000
    Query Options (non default): EXPLAIN_LEVEL=3
    : 0.000ns
    Query Timeline: 20.768ms
       - Start execution: 48.347us (48.347us)
       - Planning finished: 13.850ms (13.801ms)
       - Rows available: 14.098ms (248.059us)
       - First row fetched: 16.199ms (2.100ms)
       - Unregister query: 20.475ms (4.276ms)
  ImpalaServer:
     - ClientFetchWaitTimer: 6.283ms
     - RowMaterializationTimer: 0.000ns
~~~     # expalin:
~~~     可以不真正执行任务,只是展示任务的执行计划;

~~~     # profile:
~~~     需要任务执行完成后调用,可以从更底层以及更详细的层面来观察我们运行impala的任务,
~~~     进行调优。

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(7)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示