impala系列: 同步Hive元数据和收集统计信息
---====================
-- Impala 获取hive 的 metadata
---====================
Impala 通常和Hive共用同一个metadata 数据库(通常是MySQL/PostgreSQL), 所以Impala 能够读取到Hive的元数据信息. 如果Impala需要访问Hive表, 需要将Hive metadata 刷新到impala中.
在Hive中Create/Drop表后, 或者HDFS rebalance,或者手工删除HDFS的文件后, 则需要在impala中执行下面两行命令:
INVALIDATE METADATA table_name;
describe table_name;
第一行命令 INVALIDATE METADATA 告诉impala 指定的 table 元数据已经过期, impala 将在下一次使用到该表时自动刷新元数据, 第二行命令即触发impala去更新元数据, 以免将来真正使用该表耗时太久.
如果Impala已经知道了Hive表的存在后, 又通过Hive增加或删除分区或alter table, 使用 refresh 命令即可更新元数据. refresh是对元数据进行增量更新, 和INVALIDATE METADATA相比, refresh命令使用成本低很多.
REFRESH table_name; --增量刷新全表
refresh [table_name] [PARTITION (key_col1=val1 [, key_col2=val2...])]]; --仅仅刷新指定分区
INVALIDATE METADATA 命令如果不指定表名, 则将所有表的元数据都标记为过期, 慎用!
---====================
-- 收集统计信息
---====================
Impala 仅仅能部分利用Hive的统计信息, 要想得到好的执行效率, impala需要收集统计信息.
1. 检查统计信息
show table stats table_name; --显示表和分区级别的统计信息.
如果返回第一列 #Rows 值-1, 表名还没有收集过统计信息.
show column stats table_name ; --显示列级别的统计信息.
2. 收集统计信息
Impala 的compute stats 一条命令同时采集表和字段两种信息, 使用起来非常方便.
它增量和全量两种写法, 在从未收集过统计信息的前提下, 并且数量一致的情况下, 使用COMPUTE STATS命令要比COMPUTE INCREMENTAL STATS速度更快. 所以对于非分区表, 推荐使用COMPUTE STATS.
COMPUTE STATS table_name ; -- 对于非分区表, 推荐使用COMPUTE STATS, 速度更快
COMPUTE INCREMENTAL STATS table_name ;--对于分区表, 推荐使用COMPUTE INCREMENTAL STATS, 速度更快一些.
如果table通过Hive增加了分区, 需要先进行refresh, 然后增量收集统计信息.
REFRESH table_name;
COMPUTE INCREMENTAL STATS table_name;
3. 删除统计信息
DROP STATS table_name
DROP INCREMENTAL STATS table_name PARTITION (key_col1=val1 [, key_col2=val2...])]
impala系列: 同步Hive元数据和收集统计信息的更多相关文章
- [统计信息系列7] Oracle 11g的自动统计信息收集
(一)统计信息收集概述 在Oracle 11g中,默认有3个自动任务,分别是:自动统计信息收集.SQL调优顾问.段空间调整顾问,查看方法如下: SQL> SELECT CLIENT_NAME,T ...
- Oracle 判断 并 手动收集 统计信息 脚本
CREATE OR REPLACE PROCEDURE SchameB.PRC_GATHER_STATS AUTHID CURRENT_USER IS BEGIN SYS.DBMS_STATS.GAT ...
- Oracle 手动收集统计信息
收集oracle统计信息 优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN: 列统计: --列中唯一值的数量(NDV ...
- Oracle重建表索引及手工收集统计信息
Oracle重建所有表的索引的sql: SELECT 'alter index ' || INDEX_NAME || ' rebuild online nologging;' FROM USER_IN ...
- Oracle 11g系统自己主动收集统计信息的一些知识
在11g之前,当表的数据量改动超过总数据量的10%,就会晚上自己主动收集统计信息.怎样推断10%.之前的帖子有研究过:oracle自己主动统计信息的收集原理及实验.这个STALE_PERCENT=10 ...
- 收集统计信息让SQL走正确的执行计划
数据库环境:SQL SERVER 2005 今天在生产库里抓到一条跑得慢的SQL,语句不是很复杂,返回的数据才有800多行, 却执行了34分钟,甚至更久. 先看一下执行结果 我贴一下SQL. SELE ...
- [Oracle] 11G自己主动收集统计信息
在11g中,默认自己主动收集统计信息的时间为晚上10点(周一到周五,4个小时),早上6点(周六,周日,20个小时),例如以下所看到的: select a.window_name, a.repeat_i ...
- 验证Oracle收集统计信息参数granularity数据分析的力度
最近在学习Oracle的统计信息这一块,收集统计信息的方法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, ---所有者名字 tabname ...
- 启用oracle 11g自己主动收集统计信息
今天接到朋友数据库一个case,在DBCA建库时,把自己主动收集统计信息的选项去掉了,数据库执行半年没有收集过统计信息.如今要启用方法例如以下: exec DBMS_AUTO_TASK_ADMIN.E ...
随机推荐
- TypeError: __init__() got an unexpected keyword argument 't_command'
python .\manage.py migrate 报错如下 λ python .\manage.py migrateTraceback (most recent call last): File ...
- iis默认文档
环境 W10 IIS10 输入网址后,显示一个默认首页,在IIS中,一般指定一个根目录下的文件例如index.html 如果要指定子目录下的文件, 例如让 /home/index.html 这个文件成 ...
- 不裸缩点》。。。POJ2186受欢迎的牛
不裸缩点>...POJ2186受欢迎的牛 :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: ...
- 【原创】线段树query模板对比! 新手线段树的一个容易出错的问题!!因为我就糊涂了一整天.......
我们解决问题的最好方法就是拿实例来举例子 我们来看tyvj1038或计蒜客 “管家的忠诚” 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管 ...
- ubuntu下查看磁盘读写情况
iostat -d -k 1 10 每秒刷新一次,共10次. 未完待续..
- CF1131F Asya And Kittens(Kruskal重构树,启发式合并)
这题难度1700,我感觉又小了…… 这题虽然没几个人是用kruskal重构树的思想做的,但是我是,所以我就放了个kruskal重构树的标签. 题目链接:CF原网 题目大意:有一个长为 $n$ 的排列, ...
- JQ动态生成的元素,原事件绑定失效
Old Code: $('code').click(function () { console.log($(this).text()); }); New Code:(.container 是<c ...
- navicat premium 12破解流程
具体步骤:这是破解的具体链接 仅此记录,以供后续之需
- ICPC模板编写 latex
推荐模板 https://www.jianshu.com/p/28552706e811 另外导入C文件: \lstinputlisting[language=C]{xxx.c} .c文件编码方式为UT ...
- MATLAB中mesh函数的使用:基于像素强度画3D密度图(create a 3D density plot based on the pixel intensity:mesh function)
所用的函数非常简单,只需要用到mesh函数,示例代码如下: Ima=imread('F:\pathto\test.jpg'); surf_ima = surf(rgb2gray(Ima)); %黑色的 ...