23 次浏览

一张简单HIVE表的元数据信息

首先将数据传到hdfs上

创建hdfs目录
hdfs dfs -mkdir /usr/warehouse/student 
上传数据
hdfs dfs -put ./*.txt /user/warehouse/student

创建hive表,没有指定数据库,则默认存在default库中。

create external table if not exists student_tb_txt (
    s_no string comment '学号',
    s_name string comment '姓名',
    s_brith string comment '生日',
    s_age bigint comment '年龄',
    s_sex string comment '性别',
    s_score bigint comment '分数',
    s_desc string comment '描述'
)
row fromat delimited
fields terminated by '\t'
location '/user/warehouse/student/';

在搭建环境时,我设置的mysql作为元数据存储,并设置了一个名为“hive”的数据库存储数据。在数据库存储HIVE元数据,包括HIVE数据库的表、分区、列等信息。如下图所示为启动hive metastore会生成的表。

数据库级

表DBS:存储HIVE数据库的相关信息,可以看到较为重要的信息就是数据库所属的hdfs位置。

数据表级

表TBLS:存储表的相关信息,会给表分配一个TBL_ID,还会关联所属数据库DB_ID。保存数据表的表名,表类型。

表TABLE_PARAMS:记录表的参数是否为外部表、文件数、文件总大小,transient_lastDdlTime。

表PARTITION_KEYS:hive表通常会设计分区,所以与表相关的还存在partition_keys

表TBL_PRIVS:记录表的权限相关信息

表TAB_COL_STATS:记录表中列的统计信息。

分区级

表PARTITIONS:记录分区信息,所属表、分区名

表PART_COL_STATS 表PARTITION_PARAMS同数据表级相关表一样

数据级

表SDS:记录数据存储的信息,存储的位置、输入输出的格式

表CDS、表COLUMNS_V2:记录字段信息

表SERDES:记录表的序列化、反序列化信息

表SERDE_PARAMS:记录行、字段分割符信息

表SKEWED_COL_NAMES:记录数据表字段是倾斜的

以上为一张hive表的信息要大致存储哪些元数据信息到元数据库中。