`
flylynne
  • 浏览: 364268 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hive 元数据库表信息

 
阅读更多

 Hive 的元数据信息通常存储在关系型数据库中,常用MySQL数据库作为元数据库管理。

 

1. 版本表

  i) VERSION   -- 查询版本信息

2. 数据库、文件存储相关

  i) DBS     -- 存储Hive中所有数据库的基本信息

  ii) SDS    -- 存储Hive中文件存储的基本信息

    

 

 

3. 表、视图相关

  i) TBLS     -- 存储Hive表、视图、索引表的基本信息

    

  简要说明:1. 内部表与外部表的区别, 外部表 drop table 后,只删除元数据信息,数据文件还在。但是内部表 drop table 后,元数据和数据文件都会删除。

       2. INDEX_TABLE : 创建索引后,Hive会单独生成一个物理表,存储索引信息和数据。

 

4. 列、分区相关

  i) COLUMNS_V2     -- 存储表对应的字段信息

  ii) PARTITIONS      -- 存储表分区的基本信息

  iii) PARTITION_KEYS  -- 存储分区的字段信息

    

 

 

-- 收集统计信息
---====================
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...])]

 

 

hive里如何快速查看表中有多少记录数

直接从Mysql里查询

mysql> use hive

 

select * from TBLS where TBL_NAME='call_center';

 

mysql> select a.TBL_ID, a.TBL_NAME, b.PARAM_KEY, b.PARAM_VALUE from TBLS as a join TABLE_PARAMS as b where a.TBL_ID = b.TBL_ID and TBL_NAME="web_sales" and PARAM_KEY="numRows";

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

| TBL_ID | TBL_NAME  | PARAM_KEY | PARAM_VALUE |

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

|    382 | web_sales | numRows   | -1          |

|    406 | web_sales | numRows   | 144002668   |

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics