Hadoop-impala十大优化之(3)—impala表和列信息统计操作最佳实践

9 篇文章 4 订阅
7 篇文章 0 订阅

1.1  Hadoop-impala十大优化之(3)—impala表和列信息统计操作

1.1.1  表和列的信息统计

show table stats parquet_snappy;

compute stats parquet_snappy;

n  如果是hive的话,统计信息命令如下

u  ANALYZE TABLE COMPUTE STATISTICS FOR COLUMNS

show table stats parquet_snappy;

+-------+--------+---------+--------------+-------------------+---------+-------------------+...

| #Rows | #Files | Size    | Bytes Cached | Cache Replication | Format  | Incremental stats |...

+-------+--------+---------+--------------+-------------------+---------+-------------------+...

| -1    | 96     | 23.35GB | NOT CACHED   | NOT CACHED        | PARQUET | false             |...

+-------+--------+---------+--------------+-------------------+---------+-------------------+...

 

compute stats parquet_snappy;

+-----------------------------------------+

| summary                                 |

+-----------------------------------------+

| Updated 1 partition(s) and 6 column(s). |

+-----------------------------------------+

 

 

show table stats parquet_snappy;

+------------+--------+---------+--------------+-------------------+---------+-------------------+...

| #Rows      | #Files | Size    | Bytes Cached | Cache Replication | Format  | Incremental stats |...

+------------+--------+---------+--------------+-------------------+---------+-------------------+...

| 1000000000 | 96     | 23.35GB | NOT CACHED   | NOT CACHED        | PARQUET | false             |...

+------------+--------+---------+--------------+-------------------+---------+-------------------+...

1.1.2  关于列的信息统计

show column stats parquet_snappy;

compute stats parquet_snappy;

 

show column stats parquet_snappy;

+-------------+----------+------------------+--------+----------+----------+

| Column      | Type     | #Distinct Values | #Nulls | Max Size | Avg Size |

+-------------+----------+------------------+--------+----------+----------+

| id          | BIGINT   | -1               | -1     | 8        | 8        |

| val         | INT      | -1               | -1     | 4        | 4        |

| zerofill    | STRING   | -1               | -1     | -1       | -1       |

| name        | STRING   | -1               | -1     | -1       | -1       |

| assertion   | BOOLEAN  | -1               | -1     | 1        | 1        |

| location_id | SMALLINT | -1               | -1     | 2        | 2        |

+-------------+----------+------------------+--------+----------+----------+

 

compute stats parquet_snappy;

+-----------------------------------------+

| summary                                 |

+-----------------------------------------+

| Updated 1 partition(s) and 6 column(s). |

+-----------------------------------------+

 

show column stats parquet_snappy;

+-------------+----------+------------------+--------+----------+-------------------+

| Column      | Type     | #Distinct Values | #Nulls | Max Size | Avg Size          |

+-------------+----------+------------------+--------+----------+-------------------+

| id          | BIGINT   | 183861280        | -1     | 8        | 8                 |

| val         | INT      | 139017           | -1     | 4        | 4                 |

| zerofill    | STRING   | 101761           | -1     | 6        | 6                 |

| name        | STRING   | 145636240        | -1     | 22       | 13.00020027160645 |

| assertion   | BOOLEAN  | 2                | -1     | 1        | 1                 |

| location_id | SMALLINT | 339              | -1     | 2        | 2                 |

+-------------+----------+------------------+--------+----------+-------------------+

1.1.3  有关分区表的信息统计

show partitions year_month_day;

+-------+-------+-----+-------+--------+---------+--------------+-------------------+---------+...

| year  | month | day | #Rows | #Files | Size    | Bytes Cached | Cache Replication | Format  |...

+-------+-------+-----+-------+--------+---------+--------------+-------------------+---------+...

| 2013  | 12    | 1   | -1    | 1      | 2.51MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 2   | -1    | 1      | 2.53MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 3   | -1    | 1      | 2.52MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 4   | -1    | 1      | 2.51MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 5   | -1    | 1      | 2.52MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| Total |       |     | -1    | 5      | 12.58MB | 0B           |                   |         |...

+-------+-------+-----+-------+--------+---------+--------------+-------------------+---------+...

 

show table stats year_month_day;

+-------+-------+-----+-------+--------+---------+--------------+-------------------+---------+...

| year  | month | day | #Rows | #Files | Size    | Bytes Cached | Cache Replication | Format  |...

+-------+-------+-----+-------+--------+---------+--------------+-------------------+---------+...

| 2013  | 12    | 1   | -1    | 1      | 2.51MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 2   | -1    | 1      | 2.53MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 3   | -1    | 1      | 2.52MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 4   | -1    | 1      | 2.51MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 5   | -1    | 1      | 2.52MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| Total |       |     | -1    | 5      | 12.58MB | 0B           |                   |         |...

+-------+-------+-----+-------+--------+---------+--------------+-------------------+---------+...

 

show column stats year_month_day;

+-----------+---------+------------------+--------+----------+----------+

| Column    | Type    | #Distinct Values | #Nulls | Max Size | Avg Size |

+-----------+---------+------------------+--------+----------+----------+

| id        | INT     | -1               | -1     | 4        | 4        |

| val       | INT     | -1               | -1     | 4        | 4        |

| zfill     | STRING  | -1               | -1     | -1       | -1       |

| name      | STRING  | -1               | -1     | -1       | -1       |

| assertion | BOOLEAN | -1               | -1     | 1        | 1        |

| year      | INT     | 1                | 0      | 4        | 4        |

| month     | INT     | 1                | 0      | 4        | 4        |

| day       | INT     | 5                | 0      | 4        | 4        |

+-----------+---------+------------------+--------+----------+----------+

 

compute stats year_month_day;

+-----------------------------------------+

| summary                                 |

+-----------------------------------------+

| Updated 5 partition(s) and 5 column(s). |

+-----------------------------------------+

 

show table stats year_month_day;

+-------+-------+-----+--------+--------+---------+--------------+-------------------+---------+...

| year  | month | day | #Rows  | #Files | Size    | Bytes Cached | Cache Replication | Format  |...

+-------+-------+-----+--------+--------+---------+--------------+-------------------+---------+...

| 2013  | 12    | 1   | 93606  | 1      | 2.51MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 2   | 94158  | 1      | 2.53MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 3   | 94122  | 1      | 2.52MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 4   | 93559  | 1      | 2.51MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| 2013  | 12    | 5   | 93845  | 1      | 2.52MB  | NOT CACHED   | NOT CACHED        | PARQUET |...

| Total |       |     | 469290 | 5      | 12.58MB | 0B           |                   |         |...

+-------+-------+-----+--------+--------+---------+--------------+-------------------+---------+...

 

show column stats year_month_day;

+-----------+---------+------------------+--------+----------+-------------------+

| Column    | Type    | #Distinct Values | #Nulls | Max Size | Avg Size          |

+-----------+---------+------------------+--------+----------+-------------------+

| id        | INT     | 511129           | -1     | 4        | 4                 |

| val       | INT     | 364853           | -1     | 4        | 4                 |

| zfill     | STRING  | 311430           | -1     | 6        | 6                 |

| name      | STRING  | 471975           | -1     | 22       | 13.00160026550293 |

| assertion | BOOLEAN | 2                | -1     | 1        | 1                 |

| year      | INT     | 1                | 0      | 4        | 4                 |

| month     | INT     | 1                | 0      | 4        | 4                 |

| day       | INT     | 5                | 0      | 4        | 4                 |

+-----------+---------+------------------+--------+----------+-------------------+

1.1.4  增量信息统计

在2.1.0高,你可以使用语法计算增量数据和增量数据下降。增量子句与增量统计工作,是一个专门的功能分区表,是大或经常更新新的分区。

INCREMENTAL STATS or DROP INCREMENTAL STATS statement.

1.1.5  什么时候需要重新统计信息

      当一个内容表或分区明显变化,重新计算统计相关数据表或分区。

     变化是“重大”的程度不同,根据表的绝对和相对大小。

     通常,如果你添加了30%多个数据表,这是值得重新计算统计,因为行和不同值的数量差异可能导致impala选择不同的连接顺序时,表中使用的查询。这个指南对于最大的表是最重要的。

例如,增加30%个新的数据表中含有1 TB的具有更大的影响比加入顺序加30%表只包含几兆字节,而较大的表对查询性能有较大的影响如果impala选择一个次优顺序连接由于过时的统计数据。

     如果你加载一个完整的数据表中的数据的新的集合,而每一列的行数和不同值的数量是相对不变的,你不需要重新计算统计表。

     如果一个表的数据是过时的,和表的大小使它重新计算新的数据立即不切实际,你可以使用下拉数据声明删除过时的数据,使其更容易识别,需要一个新的计算统计操作表。

对于一个大的分区表,请考虑使用增量统计特征在Impala 2.1.0高可用,在增量统计概要说明。如果你添加一个新的分区表,这是值得重新计算增量数据,因为操作只需扫描数据,一个新的分区。

1.1.6  查看表和列的统计信息样例

[localhost:21000] > show table stats store;

+-------+--------+--------+--------+

| #Rows | #Files | Size   | Format |

+-------+--------+--------+--------+

| -1    | 1      | 3.08KB | TEXT   |

+-------+--------+--------+--------+

|Returned 1 row(s) in 0.03s

[localhost:21000] > show column stats store;

+--------------------+-----------+------------------+--------+----------+----------+

| Column             | Type      | #Distinct Values | #Nulls | Max Size | Avg Size |

+--------------------+-----------+------------------+--------+----------+----------+

| s_store_sk         | INT       | -1               | -1     | 4        | 4        |

| s_store_id         | STRING    | -1               | -1     | -1       | -1       |

| s_rec_start_date   | TIMESTAMP | -1               | -1     | 16       | 16       |

| s_rec_end_date     | TIMESTAMP | -1               | -1     | 16       | 16       |

| s_closed_date_sk   | INT       | -1               | -1     | 4        | 4        |

| s_store_name       | STRING    | -1               | -1     | -1       | -1       |

| s_number_employees | INT       | -1               | -1     | 4        | 4        |

| s_floor_space      | INT       | -1               | -1     | 4        | 4        |

| s_hours            | STRING    | -1               | -1     | -1       | -1       |

| s_manager          | STRING    | -1               | -1     | -1       | -1       |

| s_market_id        | INT       | -1               | -1     | 4        | 4        |

| s_geography_class  | STRING    | -1               | -1     | -1       | -1       |

| s_market_desc      | STRING    | -1               | -1     | -1       | -1       |

| s_market_manager   | STRING    | -1               | -1     | -1       | -1       |

| s_division_id      | INT       | -1               | -1     | 4        | 4        |

| s_division_name    | STRING    | -1               | -1     | -1       | -1       |

| s_company_id       | INT       | -1               | -1     | 4        | 4        |

| s_company_name     | STRING    | -1               | -1     | -1       | -1       |

| s_street_number    | STRING    | -1               | -1     | -1       | -1       |

| s_street_name      | STRING    | -1               | -1     | -1       | -1       |

| s_street_type      | STRING    | -1               | -1     | -1       | -1       |

| s_suite_number     | STRING    | -1               | -1     | -1       | -1       |

| s_city             | STRING    | -1               | -1     | -1       | -1       |

| s_county           | STRING    | -1               | -1     | -1       | -1       |

| s_state            | STRING    | -1               | -1     | -1       | -1       |

| s_zip              | STRING    | -1               | -1     | -1       | -1       |

| s_country          | STRING    | -1               | -1     | -1       | -1       |

| s_gmt_offset       | FLOAT     | -1               | -1     | 4        | 4        |

| s_tax_percentage   | FLOAT     | -1               | -1     | 4        | 4        |

+--------------------+-----------+------------------+--------+----------+----------+

Returned 29 row(s) in 0.04s

在分析列统计表的表报表时,您必须指定用于收集统计数据的每个列。impala计算统计报表自动汇总所有列的统计,因为它读取整个表比较快,可以有效地计算所有列的值。这个例子显示了运行后的计算统计报表,统计数据被填充在表和它的所有列中:

[localhost:21000] > compute stats store;

+------------------------------------------+

| summary                                  |

+------------------------------------------+

| Updated 1 partition(s) and 29 column(s). |

+------------------------------------------+

|Returned 1 row(s) in 1.88s

[localhost:21000] > show table stats store;

+-------+--------+--------+--------+

| #Rows | #Files | Size   | Format |

+-------+--------+--------+--------+

| 12    | 1      | 3.08KB | TEXT   |

+-------+--------+--------+--------+

|Returned 1 row(s) in 0.02s

[localhost:21000] > show column stats store;

+--------------------+-----------+------------------+--------+----------+-------------------+

| Column             | Type      | #Distinct Values | #Nulls | Max Size | Avg Size          |

+--------------------+-----------+------------------+--------+----------+-------------------+

| s_store_sk         | INT       | 12               | -1     | 4        | 4                 |

| s_store_id         | STRING    | 6                | -1     | 16       | 16                |

| s_rec_start_date   | TIMESTAMP | 4                | -1     | 16       | 16                |

| s_rec_end_date     | TIMESTAMP | 3                | -1     | 16       | 16                |

| s_closed_date_sk   | INT       | 3                | -1     | 4        | 4                 |

| s_store_name       | STRING    | 8                | -1     | 5        | 4.25              |

| s_number_employees | INT       | 9                | -1     | 4        | 4                 |

| s_floor_space      | INT       | 10               | -1     | 4        | 4                 |

| s_hours            | STRING    | 2                | -1     | 8        | 7.083300113677979 |

| s_manager          | STRING    | 7                | -1     | 15       | 12                |

| s_market_id        | INT       | 7                | -1     | 4        | 4                 |

| s_geography_class  | STRING    | 1                | -1     | 7        | 7                 |

| s_market_desc      | STRING    | 10               | -1     | 94       | 55.5              |

| s_market_manager   | STRING    | 7                | -1     | 16       | 14                |

| s_division_id      | INT       | 1                | -1     | 4        | 4                 |

| s_division_name    | STRING    | 1                | -1     | 7        | 7                 |

| s_company_id       | INT       | 1                | -1     | 4        | 4                 |

| s_company_name     | STRING    | 1                | -1     | 7        | 7                 |

| s_street_number    | STRING    | 9                | -1     | 3        | 2.833300113677979 |

| s_street_name      | STRING    | 12               | -1     | 11       | 6.583300113677979 |

| s_street_type      | STRING    | 8                | -1     | 9        | 4.833300113677979 |

| s_suite_number     | STRING    | 11               | -1     | 9        | 8.25              |

| s_city             | STRING    | 2                | -1     | 8        | 6.5               |

| s_county           | STRING    | 1                | -1     | 17       | 17                |

| s_state            | STRING    | 1                | -1     | 2        | 2                 |

| s_zip              | STRING    | 2                | -1     | 5        | 5                 |

| s_country          | STRING    | 1                | -1     | 13       | 13                |

| s_gmt_offset       | FLOAT     | 1                | -1     | 4        | 4                 |

| s_tax_percentage   | FLOAT     | 5                | -1     | 4        | 4                 |

+--------------------+-----------+------------------+--------+----------+-------------------+

Returned 29 row(s) in 0.04s


下面的示例显示了如何将统计数据表示为一个分区表。在这种情况下,我们已经建立了一个表,以保持世界上最琐碎的人口普查数据,一个单一的字符串字段,按一年的列分区。表统计包括每个分区的单独的条目,以及数字字段的最终总计。列数据包括分区列一些容易推断出来的事实,如不同值的数量(划分子目录的数量)。

localhost:21000] > describe census;

+------+----------+---------+

| name | type     | comment |

+------+----------+---------+

| name | string   |         |

| year | smallint |         |

+------+----------+---------+

Returned 2 row(s) in 0.02s

[localhost:21000] > show table stats census;

+-------+-------+--------+------+---------+

| year  | #Rows | #Files | Size | Format  |

+-------+-------+--------+------+---------+

| 2000  | -1    | 0      | 0B   | TEXT    |

| 2004  | -1    | 0      | 0B   | TEXT    |

| 2008  | -1    | 0      | 0B   | TEXT    |

| 2010  | -1    | 0      | 0B   | TEXT    |

| 2011  | 0     | 1      | 22B  | TEXT    |

| 2012  | -1    | 1      | 22B  | TEXT    |

| 2013  | -1    | 1      | 231B | PARQUET |

| Total | 0     | 3      | 275B |         |

+-------+-------+--------+------+---------+

Returned 8 row(s) in 0.02s

[localhost:21000] > show column stats census;

+--------+----------+------------------+--------+----------+----------+

| Column | Type     | #Distinct Values | #Nulls | Max Size | Avg Size |

+--------+----------+------------------+--------+----------+----------+

| name   | STRING   | -1               | -1     | -1       | -1       |

| year   | SMALLINT | 7                | -1     | 2        | 2        |

+--------+----------+------------------+--------+----------+----------+

Returned 2 row(s) in 0.02s

The following example shows how the statistics are filled in by a COMPUTE STATS statement in Impala.

[localhost:21000] > compute stats census;

+-----------------------------------------+

| summary                                 |

+-----------------------------------------+

| Updated 3 partition(s) and 1 column(s). |

+-----------------------------------------+

|Returned 1 row(s) in 2.16s

[localhost:21000] > show table stats census;

+-------+-------+--------+------+---------+

| year  | #Rows | #Files | Size | Format  |

+-------+-------+--------+------+---------+

| 2000  | -1    | 0      | 0B   | TEXT    |

| 2004  | -1    | 0      | 0B   | TEXT    |

| 2008  | -1    | 0      | 0B   | TEXT    |

| 2010  | -1    | 0      | 0B   | TEXT    |

| 2011  | 4     | 1      | 22B  | TEXT    |

| 2012  | 4     | 1      | 22B  | TEXT    |

| 2013  | 1     | 1      | 231B | PARQUET |

| Total | 9     | 3      | 275B |         |

+-------+-------+--------+------+---------+

Returned 8 row(s) in 0.02s

[localhost:21000] > show column stats census;

+--------+----------+------------------+--------+----------+----------+

| Column | Type     | #Distinct Values | #Nulls | Max Size | Avg Size |

+--------+----------+------------------+--------+----------+----------+

| name   | STRING   | 4                | -1     | 5        | 4.5      |

| year   | SMALLINT | 7                | -1     | 2        | 2        |

+--------+----------+------------------+--------+----------+----------+

Returned 2 row(s) in 0.02s

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值