Impala命令COMPUTE STATS的解析

COMPUTE STATS主要作用:

收集有关表中数据的容量和分布以及所有相关列和分区的信息。这些信息存储在metastore数据库中,Impala使用这些信息来帮助优化查询。例如,如果Impala可以确定一个表是大是小,或者有很多或很少不同的值,它就可以为一个连接查询或插入操作适当地组织并行化工作。

语法:

COMPUTE STATS [db_name.]table_nameCOMPUTE INCREMENTAL STATS [db_name.]table_name [PARTITION (partition_spec)]

(PARTITION)只允许分区子句与增量子句组合使用。对于计算增量统计,它是可选的,对于删除增量统计,它是必需的。当您在COMPUTE INCREMENTAL STATS或DROP INCREMENTAL STATS语句中通过PARTITION (partition_spec)子句指定分区时,必须在规范中包含所有分区列,并为所有分区键列指定常量值。

最初,Impala依赖于用户来运行Hive分析表语句,但是这种收集统计数据的方法被证明是不可靠且难以使用的。Impala COMPUTE STATS语句从头开始构建,以提高该操作的可靠性和用户友好性。COMPUTE STATS不需要任何设置步骤或特殊配置。您只运行一个Impala COMPUTE STATS语句来收集表和列的统计信息,而不是针对每种统计信息分别运行Hive ANALYZE表语句。
COMPUTE INCREMENTAL STATS变体是分区表的快捷方式,它只在分区的一个子集上工作,而不是整个表。增量特性使它适合于具有许多分区的大型表,在这些表中,每次添加或删除一个分区时,完整的COMPUTE STATS操作都要花费很长时间。有关详细使用情况,请参见增量统计的概述。
计算增量统计仅适用于分区表。如果对未分区表使用INCREMENTAL子句,Impala会自动使用原始的COMPUTE STATS语句。这样的表在显示表stats输出的Incremental stats列下显示false。

Note:

由于许多性能最关键、资源最密集的操作都依赖于表和列统计信息来构建准确、高效的计划,因此计算统计信息是ETL过程最后的一个重要步骤。

在慢速查询的性能调优期间,或在内存不足的情况下进行故障排除时,
第一步是在所有表上运行COMPUTE STATS:
准确的统计数据有助于Impala为连接查询构建高效的查询计划,提高性能并减少内存使用。
准确的统计数据有助于Impala有效地将插入操作分配到拼花表中,提高性能并减少内存使用。
准确的统计数据可以帮助Impala估计每个查询所需的内存,这在使用资源管理特性(如许可控制和纱线资源管理框架)时非常重要。统计数据帮助Impala实现高并发性,充分利用可用内存,避免与其他Hadoop组件的工作负载争用。

复杂类型的考虑:

目前,COMPUTE STATS语句创建的统计信息不包括关于复杂类型列的信息。复杂列的列统计指标总是显示为-1。对于涉及复杂类型列的查询,Impala使用启发式方法来估计这些列中的数据分布。
HBase注意事项:
COMPUTE STATS也适用于HBase表。为HBase表收集的统计信息与为hdfs支持的表收集的统计信息有所不同,但是在连接查询中涉及到HBase表时,仍然使用元数据进行优化。

性能注意事项:

COMPUTE STATS收集的统计信息用于优化连接查询、向拼花表插入操作和其他资源密集型SQL语句。
对于大型表,COMPUTE STATS语句本身可能需要很长时间,您可能需要调优它的性能。

COMPUTE STATS语句不能与EXPLAIN语句或impala-shell中的SUMMARY命令一起工作。

您可以使用impala-shell中的概要文件语句来整体检查语句的计时信息。

如果一个基本的COMPUTE STATS语句对于一个分区表花费了很长时间,那么可以考虑切换到COMPUTE INCREMENTAL STATS语法,以便每次只分析新添加的分区。

文件格式注意事项:

COMPUTE STATS语句处理使用Impala支持的任何文件格式创建的表。有关使用不同文件格式的详细信息,请参见Impala如何处理Hadoop文件格式。根据表的文件格式,以下考虑适用于计算统计信息。
COMPUTE STATS语句对文本表没有任何限制。这些表可以通过Impala或Hive创建。
COMPUTE STATS语句适用于拼花表。这些表可以通过Impala或Hive创建。
COMPUTE STATS语句可以不受CDH 5.4 / Impala 2.2或更高版本中Avro表的限制。在以前的版本中,COMPUTE STATS只适用于通过Hive创建的Avro表,并且要求CREATE TABLE语句使用sql风格的列名和类型,而不是Avro风格的模式规范。
COMPUTE STATS语句对RCFile表没有任何限制。这些表可以通过Impala或Hive创建。
COMPUTE STATS语句可以处理没有限制的SequenceFile表。这些表可以通过Impala或Hive创建。
COMPUTE STATS语句处理分区表,不管所有分区使用相同的文件格式,还是通过ALTER TABLE定义某些分区以使用不同的文件格式。

DDL语句类型:

取消:当在内部运行INSERT或SELECT操作时,某些多阶段语句(创建表作为SELECT和COMPUTE STATS)可以在某些阶段取消。取消这个语句,使用ctrl - c从impala-shell解释器,取消按钮看页面的色调,行动>从查询列表中取消Cloudera经理,或取消从动态查询列表中(为特定节点)的查询选项卡上的黑斑羚web UI(端口25000)。
目前,CDH 4下的COMPUTE STATS语句不存储小数列的任何统计信息。当Impala在CDH 5下运行时,它在metastore数据库中对DECIMAL有更好的支持,COMPUTE STATS确实收集了DECIMAL列的统计信息,而Impala使用这些统计信息来优化查询性能。

Note:在Impala 1.4.0之前,COMPUTE STATS统计每个列中的空值数量,并将该数字记录在metastore数据库中。因为Impala目前在查询规划期间不使用空计数,所以Impala 1.4.0及更高版本通过跳过这个空计数来加速COMPUTE STATS语句。

内部细节:

在后台,COMPUTE STATS语句执行两条语句:一条通过count(*)函数计算表中每个分区(或者未分区的整个表)的行数,另一条通过NDV()函数计算每列中不同值的近似数量。您可能在监视和诊断显示中看到这些查询。影响其他查询的性能、可伸缩性和执行的因素(如并行执行、内存使用、允许控制和超时)也适用于COMPUTE STATS语句运行的查询。

HDFS权限:

impalad守护进程所运行的用户ID(通常是impala用户)必须具有源目录中所有受影响文件的读权限:未分区表中的所有文件或计算统计表中的分区表;如果是计算增量统计,则为不包含增量统计的分区中的所有文件。它还必须具有所有包含数据文件的相关目录的读取和执行权限。(本质上,COMPUTE STATS需要与它对表运行的底层SELECT查询相同的权限。)

Impala命令COMPUTE STATS的解析相关推荐

  1. Impala的命令COMPUTE STATS

    COMPUTE STATS主要作用: 收集有关表中数据的容量和分布以及所有相关列和分区的信息.这些信息存储在metastore数据库中,Impala使用这些信息来帮助优化查询.例如,如果Impala可 ...

  2. OLAP(三):Impala介绍 、 (和hive/spark对比)、COMPUTE STATS

    一.Impala概述 Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎.与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟.换句话说,Impal ...

  3. 【Linux 内核】进程管理 ( 进程特殊形式 | 内核线程 | 用户线程 | C 标准库与 Linux 内核中进程相关概念 | Linux 查看进程命令及输出字段解析 )

    文章目录 一.进程特殊形式 ( 内核线程 | 用户线程 ) 二.C 标准库与 Linux 内核中进程相关概念 三.Linux 查看进程命令及输出字段解析 一.进程特殊形式 ( 内核线程 | 用户线程 ...

  4. stata中计算公式命令_#stata中哪个命令和stats命令等价#stata中计算命令

    f的临界值在stata中怎么输入命令计算 stata怎么用命令计算有几个变量 dis `c(k)'可以看到数据中含有的变量的个数. 不过这个命令会把"股票代码"和"日期& ...

  5. jmap命令的实现原理解析

    本文来说下jmap命令的实现原理解析 文章目录 概述 jmap可以做什么 jmap实现原理 attach SA 本文小结 概述 当服务器端发生GC问题的时候,应该怎样去处理GC问题.其中jmap就是一 ...

  6. Linux命令`ll`的结果解析

    下面是随便一个目录下的ll命令,显示的结果分为7个列. 第1列是文件类型加权限. 第一个字符为文件类型, d表示目录, l表示软连接, -表示文件, c表示字符设备文件. 后面的字符分为三组, 所有者 ...

  7. 【WINDOWS / DOS 批处理】choice命令之参数完整解析

    [命令格式] CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text] [/?] [命令功能] 该命令允许用户从选项列表中选择一个 ...

  8. 解决Ubuntu执行sudo命令后提示无法解析主机

    解决Ubuntu执行sudo命令后提示无法解析主机 异常现象 异常原因 查看修改主机名 普通用户与管理员间的切换 异常现象 异常原因 /etc/hostname和/etc/hosts文件中主机名称不一 ...

  9. hadoop fsck命令分析 + 源码解析

    fsck命令分析 HDFS支持fsck命令用以检查各种不一致.fsck用以报告各种文件问题,如block丢失或缺少block等.fsck命令用法如下: $HADOOP_HOME/bin/ hdfs f ...

最新文章

  1. AE 先进的视频画面 快速释放 慢动作
  2. python主要学哪些课程_Python学习课程大纲自学Python参考
  3. Python 集合的定义以及常用运算及函数
  4. 青云服务器安全设置器2.3最新版版提供下载
  5. python3 设置默认编码_Python3的字符编码乱码问题解决思路
  6. IntelliJ IDEA下载激活
  7. 0基础lua学习(二十)Lua单例
  8. Inno Setup 检测已安装的.NET Framework 版本
  9. [SSH] 传输文件
  10. R count函数_【函数分享】PHP函数str_word_count()分享(202098)
  11. 增加游戏受众:在英特尔核显上运行MR游戏
  12. 手动升级麦咖啡(McAfee)病毒库的步骤
  13. 水清冷冷:Prcc 2018永久安装图文教程(附工具补丁)
  14. 生成翻转棋子游戏数据
  15. 三角网格的顶点曲率计算(平均曲率和高斯曲率)
  16. django html传递数组,django将数组传递给前台模板的方法
  17. 计算机视觉——SIFT图像匹配算法
  18. APP自动化测试-Appium编写脚本并执行
  19. android电话通讯录导入iphone6,怎么把小米手机通讯录导入iphone6?
  20. 华为服务器网口ip配置文件,华为服务器、存储IP初始配置方法

热门文章

  1. YARN组件详细介绍
  2. 8篇文章系统梳理ARM开发中的文件类型
  3. 学习Oracle的三重境界
  4. 【Computer Organization笔记26】总线 bus :多个部件之间进行数据传送的共享通道,总线设计 - 总线仲裁、数据传输模式、提高总线性能
  5. 抛物型方程向前差分matlab,(整理)微分方程数值解(学生复习题).
  6. linux sql server调优,SQL SERVER性能优化(转)
  7. 奶块1月25日服务器维护时间,奶块1月25更新公告 | 手游网游页游攻略大全
  8. mysql switch binlog_TiDB binlog实时同步数据到下游Kafka
  9. php表格列宽拖拽,JavaScript_JQuery拖动表头边框线调整表格列宽效果代码,类似于桌面程序中的表格拖动 - phpStudy...
  10. 天锦十字绣:网购退货催生退货运费险