|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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」