Hive metastore表结构设计分析

简介:   今天总结下,Hive metastore的结构设计。什么是metadata呢,对于它的描述,可以理解为数据的数据,主要是描述数据的属性的信息。它是用来支持如存储位置、历史数据、资源查找、文件记录等功能。

  今天总结下,Hive metastore的结构设计。什么是metadata呢,对于它的描述,可以理解为数据的数据,主要是描述数据的属性的信息。它是用来支持如存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录。为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。

  那么我们从hive metastore的表结构设计开始:

  

 

  看到后,是不是有一种想死的冲动?没错,我也想死,但是我们可以一点一点的看,也会有理解错误,但这都是在我们通向精通的路途之上,不是么?那么我们围绕着几个核心主表进行分析。

     1、DBS 表  Columns:DB_ID、DESC、DB_LOCATION_URI、NAME、OWNER_NAME、OWNER_TYPE 

 

  DBS 表记录基本的db信息,其中DB_ID为其主键,同时也是FUNC_RU、FUNCS、DB_PRIVS、DATABASE_PARAMS、以及TBLS的外键。

  一般来说,在hive meta初始化时都会自动创建一个名叫default的库,随后通过业务发展以及数据治理等需求,可进行不同业务域库的划分。

  FUNC 表是用来存储udf的基本信息,一个UDF只能对应一个库下的表。FUNC_RU表,用于存储该udf的类型及指向的路径。

  DB_PRIVS 表记录该DB下的权限记录信息,具体没怎么研究,因为现在更多的集成开源的类似于sentry、range等成熟的权限框架。

  DATABASE_PARAMS 表记录DB的一些扩展信息,便于进行特殊属性的扩展。

  TBLS 表自然是记录该DB下的所有Table信息。对应唯一的DB_ID。

  

  2、TBLS 表 Columns:TBL_ID、CREATE_TIME、DB_ID,LAST_ACCESS_TIME、OWNER、RETENTION、SD_ID、TBL_NAME、TBL_TYPE、VIEW_EXPANDED_TEXT、VIEW_ORIGNAL_TEXT

  首先,TBLS表,这个表主要记录了table的一些基本信息,包括表名、创建时间、类型,以及SD_ID等信息。tbl_id为TBLS的主键,同时也是TABLE_PARAMS、TBL_COL_PRIVS、IDXS、TBL_PRIVS、SDS、PARTITIONS、PARTITION_KEYS、TAB_COL_STATS表的外键。

  每个TBLS都对应唯一的DB_ID,取决于你在哪个db下创建的表。在创建表写入meta的同时,也会创建相应的物理路径。同时会在SDS表中加入DDL时设置的input output、表的location以及SERDE信息(具体下面再说)

  TBL_PRIVS、TBL_COL_PRIVS表记录该hive表的表及列权限认证信息。PARTITIONS表记录该表的DDL分区的信息,对于PARTITION_KEYS以及PARTITION_VALUES都是用于PartName的拼接获取。(可查看本博客 hive metadata源码解析)

  (IDXS 与 TAB_COL_STATS还没有深入研究,后续添加)

 

  3、PARTITIONS 表 Columns:PART_ID、CREATE_TIME、LAST_ACCESS_TIME、PART_NAME、SD_ID、TBL_ID

  PARTITIONS表,通过表名也能才想到,它是partition分区存储的元数据信息。

  PART_ID为PARTITIONS表的主键,同时也是PART_COL_STATS、PART_PRIVS、PARTITION_KEY_VALS、PARTITION_PARAMS、DATABASE_PARAMS表的外键。

     Partition表在metastore中是相当重要的表,关系到partition的元数据存取(具体可参考本博客hive metastore partition篇)

 

  4、SDS 表 Columns:SD_ID、CD_ID、INPUT_FORMAT、IS_COMPRESSED、IS_STOREDASSUBDIRECTORIES、LOCATION\NUM_BUCKETS、OUTPUT_FORMAT、SERDE_ID

  

 

  SDS表主要包含计算引擎运行时需要的input与output 、location路径以及序列化的class信息。SD_ID为该表的主键,同时也是PARTITIONS、BUCKETING_COLS、SKEWD_COL_NAMES、SD_PARAMS、SORT_COLS、SKEWED_VALUES、IDXS的外键。

   今天大概先梳理到这里,后面我们从代码层面详细分析。新年快乐~o(* ̄︶ ̄*)o~

目录
相关文章
|
7月前
|
SQL HIVE
Hive LAG函数分析
Hive LAG函数分析
87 0
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
53 2
|
4月前
|
SQL 负载均衡 监控
|
4月前
|
SQL 存储 关系型数据库
|
6月前
|
SQL 数据采集 数据可视化
基于Hive的招聘网站的大数据分析系统
基于Hive的招聘网站的大数据分析系统
150 2
|
6月前
|
SQL 关系型数据库 MySQL
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
254 0
|
7月前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
1162 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
7月前
|
SQL HIVE UED
【Hive SQL 每日一题】分析电商平台的用户行为和订单数据
作为一名数据分析师,你需要分析电商平台的用户行为和订单数据。你有三张表:`users`(用户信息),`orders`(订单信息)和`order_items`(订单商品信息)。任务包括计算用户总订单金额和数量,按月统计订单,找出最常购买的商品,找到平均每月最高订单金额和数量的用户,以及分析高消费用户群体的年龄和性别分布。通过SQL查询,你可以实现这些分析,例如使用`GROUP BY`、`JOIN`和窗口函数来排序和排名。
406 2
|
SQL 分布式计算 Java
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
|
7月前
|
SQL 数据可视化 关系型数据库
【大数据实训】基于Hive的北京市天气系统分析报告(二)
【大数据实训】基于Hive的北京市天气系统分析报告(二)
232 1