- 浏览: 111908 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
土豆蛋儿:
我想读取一个外部文件,以什么方式好了? 文件内容经常编辑
flume 自定义source -
土豆蛋儿:
大神,您好。
flume 自定义source
Hive元数据解析
本文是笔者初步整理的Hive元数据表,有不准确的地方请轻拍,后续我会补充.
1. Hive 0.11 元数据表汇总
线上Hive 0.11 metastore包括下述39个表,主要分为以下几类 :
Database相关
Table相关
数据存储相关SDS
COLUMN相关
SERDE相关(序列化)
Partition相关(分区)
SKEW相关(数据倾斜)
BUCKET相关(分桶)
PRIVS相关(权限管理)
mysql> show tables;
+---------------------------+
| Tables_in_hive_yz_test |
+---------------------------+
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| DATABASE_PARAMS |
| DBS |
| DB_PRIVS |
| GLOBAL_PRIVS |
| IDXS |
| INDEX_PARAMS |
| NUCLEUS_TABLES |
| PARTITIONS |
| PARTITION_EVENTS |
| PARTITION_KEYS |
| PARTITION_KEY_VALS |
| PARTITION_PARAMS |
| PART_COL_PRIVS |
| PART_COL_STATS |
| PART_PRIVS |
| ROLES |
| ROLE_MAP |
| SDS |
| SD_PARAMS |
| SEQUENCE_TABLE |
| SERDES |
| SERDE_PARAMS |
| SKEWED_COL_NAMES |
| SKEWED_COL_VALUE_LOC_MAP |
| SKEWED_STRING_LIST |
| SKEWED_STRING_LIST_VALUES |
| SKEWED_VALUES |
| SORT_COLS |
| TABLE_PARAMS |
| TAB_COL_STATS |
| TBLS |
| TBL_COL_PRIVS |
| TBL_PRIVS |
| TYPES |
| TYPE_FIELDS |
| VERSION |
+---------------------------+
39 rows in set (0.00 sec)
2.各个表的含义
2.1 Database表:DBS
描述 该表存储Hive Database的元数据信息,DB_ID是数据库ID,NAME是库名,DB_LOCATION_URI是数据库在HDFS中的位置,DESC为数据库的描述信息。
mysql> desc DBS;
+-----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| DB_ID | bigint(20) | NO | PRI | NULL | |
| DESC | varchar(4000) | YES | | NULL | |
| DB_LOCATION_URI | varchar(4000) | NO | | NULL | |
| NAME | varchar(128) | YES | UNI | NULL | |
+-----------------+---------------+------+-----+---------+-------+
例子:acorn_3g数据库的信息如下,表示该库ID为81,路径为hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db
mysql> select * from DBS where NAME='acorn_3g';
+-------+------+-------------------------------------------------------+----------+
| DB_ID | DESC | DB_LOCATION_URI | NAME |
+-------+------+-------------------------------------------------------+----------+
| 81 | NULL | hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db | acorn_3g |
+-------+------+-------------------------------------------------------+----------+
2. 2 Table 表
描述:
TBLS 存储Hive Table的元数据信息,每个表有唯一的TBL_ID
SD_ID外键指向所属的Database,SD_IID关联SDS表的主键。 其中SDS存储列(CD_ID)等信息。TBLS.SD_ID关联SDS.SD_ID, SDS.SD_ID关联CDS.CD_ID,
CDS.CD_ID关联COLUMNS_V2.CD_ID
例子:*acorn_3g.user_act表的信息: TBL_ID为41231,TBL_TYPE为MANAGED_TABLE普通表(若值为EXTERNAL,表示外部表),DB_ID为81,表示隶属DB_ID=81的Database。
mysql> select * from TBLS where TBL_NAME='user_act' and DB_ID=81 \G
*************************** 1. row ***************************
TBL_ID: 41231
CREATE_TIME: 1366188055
DB_ID: 81
LAST_ACCESS_TIME: 0
OWNER: xianbing.liu
RETENTION: 0
SD_ID: 263311
TBL_NAME: user_act
TBL_TYPE: MANAGED_TABLE
VIEW_EXPANDED_TEXT: NULL
VIEW_ORIGINAL_TEXT: NULL
2.3 SDS表(数据存储表)
描述:
SDS表保存了Hive数据仓库所有的HDFS数据文件信息,每个SD_ID唯一标记一个数据存储记录
CD_ID关联COLUMN_V2.CD_ID,指定该数据的字段信息
SERDE_ID关联SERDES.SERDE_ID,指定该数据的序列化信息(如是否是序列化表,DELIMITED字段等)
例子:
根据SDS表找到acorn_3g.user_act表的CD_ID是263311, SERDE_ID是263301,默认存储位置为
hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db/user_act
mysql> select * from SDS where SD_ID=263311 \G
*************************** 1. row ***************************
SD_ID: 263311
CD_ID: 263311
INPUT_FORMAT: org.apache.hadoop.mapred.TextInputFormat
IS_COMPRESSED:
LOCATION: hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db/user_act
NUM_BUCKETS: -1
OUTPUT_FORMAT: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
SERDE_ID: 263301
IS_STOREDASSUBDIRECTORIES:
2.4 CDS 和 COLUMN_V2 (列信息)
CDS表
描述:
该表只有一个字段CD_ID,永远存储整个Hive数据仓库中的CD_ID.
例子:
可以看到acorn_3g.user_act表对应的CD_ID记录在CDS中
mysql> desc CDS;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| CD_ID | bigint(20) | NO | PRI | NULL | |
+-------+------------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> select * FROM CDS where CD_ID=263311;
+--------+
| CD_ID |
+--------+
| 263311 |
+--------+
1 row in set (0.00 sec)
COLUMN_V2表
描述:
该表存储了一个CD_ID对应的所有字段信息
例子:
查看acorn_3g.user_act表的COLUMN信息;我们可以看到acorn_3g.user_act表有14个字段,COLUMN_NAME为字段名,TYPE_NAME为字段类型,INTEGER_IDX为字段序号
mysql> select * from COLUMNS_V2 where CD_ID=263311 order by integer_idx;
+--------+---------+---------------+-----------+-------------+
| CD_ID | COMMENT | COLUMN_NAME | TYPE_NAME | INTEGER_IDX |
+--------+---------+---------------+-----------+-------------+
| 263311 | NULL | id | bigint | 0 |
| 263311 | NULL | action_id | int | 1 |
| 263311 | NULL | user_id | bigint | 2 |
| 263311 | NULL | request | string | 3 |
| 263311 | NULL | visit_time | string | 4 |
| 263311 | NULL | source_id | int | 5 |
| 263311 | NULL | sess_id | string | 6 |
| 263311 | NULL | mobile_number | string | 7 |
| 263311 | NULL | from_id | string | 8 |
| 263311 | NULL | app_id | string | 9 |
| 263311 | NULL | version | string | 10 |
| 263311 | NULL | reg_type | int | 11 |
| 263311 | NULL | uniqid | string | 12 |
| 263311 | NULL | failure | int | 13 |
+--------+---------+---------------+-----------+-------------+
2.5 SERDES和SERDE_PARAMS (序列化)
描述:
SERDES存储了所有的序列化信息(SERDE_ID,SLIB),SLIB表示序列化所采用的Java类
SERDES_PARAMS 存储序列化具体的参数及值
例子: acorn_3g.user_act表对应的SERDE_ID=263301表示 采用hive默认序列化类org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe , DELIMITED字符为'\t' (即创建表时指定的 ...DELIMITED BY '\t' ...)
mysql> select * FROM SERDES where SERDE_ID=263301;
+----------+------+----------------------------------------------------+
| SERDE_ID | NAME | SLIB |
+----------+------+----------------------------------------------------+
| 263301 | NULL | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe |
+----------+------+----------------------------------------------------+
mysql> select SERDE_ID,PARAM_KEY,REPLACE(PARAM_VALUE,'\t','\\t') from SERDE_PARAMS where SERDE_ID=263301;
+----------+----------------------+---------------------------------+
| SERDE_ID | PARAM_KEY | REPLACE(PARAM_VALUE,'\t','\\t') |
+----------+----------------------+---------------------------------+
| 263301 | field.delim | \t |
| 263301 | serialization.format | \t |
+----------+----------------------+---------------------------------+
2.6 PARTITIONS PARTITION_KEY 和 PARTITION_KEY_VALS (分区)
PARTITION_KEYS
描述:
PARTITION_KEYS 保存了所有分区表用于分区的字段
例子:
通过PARTITION_KEYS查看acorn_3g.user_act的分区信息,可看到该表是一个分区表,分区字段为log_date,其中INTEGER_IDX为分区字段的序号,和分区字段一一对应
mysql> desc PARTITION_KEYS;
+--------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+-------+
| TBL_ID | bigint(20) | NO | PRI | NULL | |
| PKEY_COMMENT | varchar(4000) | YES | | NULL | |
| PKEY_NAME | varchar(128) | NO | PRI | NULL | |
| PKEY_TYPE | varchar(767) | NO | | NULL | |
| INTEGER_IDX | int(11) | NO | | NULL | |
+--------------+---------------+------+-----+---------+-------+
mysql> select * FROM PARTITION_KEYS WHERE TBL_ID=41231;
+--------+--------------+-----------+-----------+-------------+
| TBL_ID | PKEY_COMMENT | PKEY_NAME | PKEY_TYPE | INTEGER_IDX |
+--------+--------------+-----------+-----------+-------------+
| 41231 | NULL | log_date | string | 0 |
+--------+--------------+-----------+-----------+-------------+
PARTITIONS
描述:
PARTITIONS存储了Hive数据仓库总所有的分区信息,每个分区由PART_ID标识,其中TBL_ID为隶属的Table,SD_ID为隶属的SDS(见2.3)
例子:
通过PARTITIONS表查看acorn_3g.user_act表的分区信息,如PART_ID为168301,名字为log_date=2013-03-01,SD_ID为231621
mysql> desc PARTITIONS;
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| PART_ID | bigint(20) | NO | PRI | NULL | |
| CREATE_TIME | int(11) | NO | | NULL | |
| LAST_ACCESS_TIME | int(11) | NO | | NULL | |
| PART_NAME | varchar(767) | YES | MUL | NULL | |
| SD_ID | bigint(20) | YES | MUL | NULL | |
| TBL_ID | bigint(20) | YES | MUL | NULL | |
+------------------+--------------+------+-----+---------+-------+
mysql> select * FROM PARTITIONS WHERE TBL_ID=41231 order by PART_NAME limit 5;
+---------+-------------+------------------+---------------------+--------+--------+
| PART_ID | CREATE_TIME | LAST_ACCESS_TIME | PART_NAME | SD_ID | TBL_ID |
+---------+-------------+------------------+---------------------+--------+--------+
| 168301 | 1366259946 | 0 | log_date=2013-03-01 | 231621 | 41231 |
| 168321 | 1366260063 | 0 | log_date=2013-03-02 | 231641 | 41231 |
| 168331 | 1366260176 | 0 | log_date=2013-03-03 | 231651 | 41231 |
| 168346 | 1366260298 | 0 | log_date=2013-03-04 | 231666 | 41231 |
| 168361 | 1366260398 | 0 | log_date=2013-03-05 | 231681 | 41231 |
+---------+-------------+------------------+---------------------+--------+--------+
PARTITION_KEY_VALS
描述:
PARTITION_KEY_VALS 存储了PARTITION_KEY中描述的分区字段的值,通常配合PARTITIONS 和PARTITION_KEYS表使用。
例子:
查看分区PART_ID=168301各分区字段的值,其中PARTITION_KEY_VALS存储了所有分区字段序号(INTEGER_IDX)和值(PART_KEY_VAL)间的对应关系。本例中acorn_3g.user_act PART_ID=168301分区log_date字段的值为‘2013-03-01’
mysql> select pk.PKEY_NAME,pk.PKEY_TYPE,pk.INTEGER_IDX,pkv.PART_KEY_VAL from PARTITION_KEYS pk,PARTITION_KEY_VALS pkv
where pk.INTEGER_IDX=pkv.INTEGER_IDX and pk.TBL_ID=41231 and pkv.PART_ID=168301;
+-----------+-----------+-------------+--------------+
| PKEY_NAME | PKEY_TYPE | INTEGER_IDX | PART_KEY_VAL |
+-----------+-----------+-------------+--------------+
| log_date | string | 0 | 2013-03-01 |
+-----------+-----------+-------------+--------------+
2.7 BUCKET 相关表
描述
BUCKETING_COLS表描述了所有采用了分桶技术的SDS,目前公司未用BUCKET,//TODO
mysql> desc BUCKETING_COLS;
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| SD_ID | bigint(20) | NO | PRI | NULL | |
| BUCKET_COL_NAME | varchar(256) | YES | | NULL | |
| INTEGER_IDX | int(11) | NO | PRI | NULL | |
+-----------------+--------------+------+-----+---------+-------+
2.8 PRIVS 权限管理相关表
TBL_PRIVS DB_PRIVS PART_PRIVS 等,目前Hive在权限管理方面远不及关系数据库,公司也未对权限进行统一管理。
2.9 SKEW 数据倾斜相关表
相比0.8版本,0.11元数据增加了数据倾斜相关的表 SKEWED_COL_NAMES SKEWED_COL_VALUE_LOC_MAP SKEWED_STRING_LIST SKEWED_STRING_LIST_VALUES SKEWED_VALUES ,这些高级特性还在测试阶段,目前公司没有用到。
2.3 其他
如VERSION 描述版本信息,这类表开发者不用太关心。
本文是笔者初步整理的Hive元数据表,有不准确的地方请轻拍,后续我会补充.
1. Hive 0.11 元数据表汇总
线上Hive 0.11 metastore包括下述39个表,主要分为以下几类 :
Database相关
Table相关
数据存储相关SDS
COLUMN相关
SERDE相关(序列化)
Partition相关(分区)
SKEW相关(数据倾斜)
BUCKET相关(分桶)
PRIVS相关(权限管理)
mysql> show tables;
+---------------------------+
| Tables_in_hive_yz_test |
+---------------------------+
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| DATABASE_PARAMS |
| DBS |
| DB_PRIVS |
| GLOBAL_PRIVS |
| IDXS |
| INDEX_PARAMS |
| NUCLEUS_TABLES |
| PARTITIONS |
| PARTITION_EVENTS |
| PARTITION_KEYS |
| PARTITION_KEY_VALS |
| PARTITION_PARAMS |
| PART_COL_PRIVS |
| PART_COL_STATS |
| PART_PRIVS |
| ROLES |
| ROLE_MAP |
| SDS |
| SD_PARAMS |
| SEQUENCE_TABLE |
| SERDES |
| SERDE_PARAMS |
| SKEWED_COL_NAMES |
| SKEWED_COL_VALUE_LOC_MAP |
| SKEWED_STRING_LIST |
| SKEWED_STRING_LIST_VALUES |
| SKEWED_VALUES |
| SORT_COLS |
| TABLE_PARAMS |
| TAB_COL_STATS |
| TBLS |
| TBL_COL_PRIVS |
| TBL_PRIVS |
| TYPES |
| TYPE_FIELDS |
| VERSION |
+---------------------------+
39 rows in set (0.00 sec)
2.各个表的含义
2.1 Database表:DBS
描述 该表存储Hive Database的元数据信息,DB_ID是数据库ID,NAME是库名,DB_LOCATION_URI是数据库在HDFS中的位置,DESC为数据库的描述信息。
mysql> desc DBS;
+-----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| DB_ID | bigint(20) | NO | PRI | NULL | |
| DESC | varchar(4000) | YES | | NULL | |
| DB_LOCATION_URI | varchar(4000) | NO | | NULL | |
| NAME | varchar(128) | YES | UNI | NULL | |
+-----------------+---------------+------+-----+---------+-------+
例子:acorn_3g数据库的信息如下,表示该库ID为81,路径为hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db
mysql> select * from DBS where NAME='acorn_3g';
+-------+------+-------------------------------------------------------+----------+
| DB_ID | DESC | DB_LOCATION_URI | NAME |
+-------+------+-------------------------------------------------------+----------+
| 81 | NULL | hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db | acorn_3g |
+-------+------+-------------------------------------------------------+----------+
2. 2 Table 表
描述:
TBLS 存储Hive Table的元数据信息,每个表有唯一的TBL_ID
SD_ID外键指向所属的Database,SD_IID关联SDS表的主键。 其中SDS存储列(CD_ID)等信息。TBLS.SD_ID关联SDS.SD_ID, SDS.SD_ID关联CDS.CD_ID,
CDS.CD_ID关联COLUMNS_V2.CD_ID
例子:*acorn_3g.user_act表的信息: TBL_ID为41231,TBL_TYPE为MANAGED_TABLE普通表(若值为EXTERNAL,表示外部表),DB_ID为81,表示隶属DB_ID=81的Database。
mysql> select * from TBLS where TBL_NAME='user_act' and DB_ID=81 \G
*************************** 1. row ***************************
TBL_ID: 41231
CREATE_TIME: 1366188055
DB_ID: 81
LAST_ACCESS_TIME: 0
OWNER: xianbing.liu
RETENTION: 0
SD_ID: 263311
TBL_NAME: user_act
TBL_TYPE: MANAGED_TABLE
VIEW_EXPANDED_TEXT: NULL
VIEW_ORIGINAL_TEXT: NULL
2.3 SDS表(数据存储表)
描述:
SDS表保存了Hive数据仓库所有的HDFS数据文件信息,每个SD_ID唯一标记一个数据存储记录
CD_ID关联COLUMN_V2.CD_ID,指定该数据的字段信息
SERDE_ID关联SERDES.SERDE_ID,指定该数据的序列化信息(如是否是序列化表,DELIMITED字段等)
例子:
根据SDS表找到acorn_3g.user_act表的CD_ID是263311, SERDE_ID是263301,默认存储位置为
hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db/user_act
mysql> select * from SDS where SD_ID=263311 \G
*************************** 1. row ***************************
SD_ID: 263311
CD_ID: 263311
INPUT_FORMAT: org.apache.hadoop.mapred.TextInputFormat
IS_COMPRESSED:
LOCATION: hdfs://YZSJHL19-42.opi.com/warehouse.test/acorn_3g.db/user_act
NUM_BUCKETS: -1
OUTPUT_FORMAT: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
SERDE_ID: 263301
IS_STOREDASSUBDIRECTORIES:
2.4 CDS 和 COLUMN_V2 (列信息)
CDS表
描述:
该表只有一个字段CD_ID,永远存储整个Hive数据仓库中的CD_ID.
例子:
可以看到acorn_3g.user_act表对应的CD_ID记录在CDS中
mysql> desc CDS;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| CD_ID | bigint(20) | NO | PRI | NULL | |
+-------+------------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> select * FROM CDS where CD_ID=263311;
+--------+
| CD_ID |
+--------+
| 263311 |
+--------+
1 row in set (0.00 sec)
COLUMN_V2表
描述:
该表存储了一个CD_ID对应的所有字段信息
例子:
查看acorn_3g.user_act表的COLUMN信息;我们可以看到acorn_3g.user_act表有14个字段,COLUMN_NAME为字段名,TYPE_NAME为字段类型,INTEGER_IDX为字段序号
mysql> select * from COLUMNS_V2 where CD_ID=263311 order by integer_idx;
+--------+---------+---------------+-----------+-------------+
| CD_ID | COMMENT | COLUMN_NAME | TYPE_NAME | INTEGER_IDX |
+--------+---------+---------------+-----------+-------------+
| 263311 | NULL | id | bigint | 0 |
| 263311 | NULL | action_id | int | 1 |
| 263311 | NULL | user_id | bigint | 2 |
| 263311 | NULL | request | string | 3 |
| 263311 | NULL | visit_time | string | 4 |
| 263311 | NULL | source_id | int | 5 |
| 263311 | NULL | sess_id | string | 6 |
| 263311 | NULL | mobile_number | string | 7 |
| 263311 | NULL | from_id | string | 8 |
| 263311 | NULL | app_id | string | 9 |
| 263311 | NULL | version | string | 10 |
| 263311 | NULL | reg_type | int | 11 |
| 263311 | NULL | uniqid | string | 12 |
| 263311 | NULL | failure | int | 13 |
+--------+---------+---------------+-----------+-------------+
2.5 SERDES和SERDE_PARAMS (序列化)
描述:
SERDES存储了所有的序列化信息(SERDE_ID,SLIB),SLIB表示序列化所采用的Java类
SERDES_PARAMS 存储序列化具体的参数及值
例子: acorn_3g.user_act表对应的SERDE_ID=263301表示 采用hive默认序列化类org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe , DELIMITED字符为'\t' (即创建表时指定的 ...DELIMITED BY '\t' ...)
mysql> select * FROM SERDES where SERDE_ID=263301;
+----------+------+----------------------------------------------------+
| SERDE_ID | NAME | SLIB |
+----------+------+----------------------------------------------------+
| 263301 | NULL | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe |
+----------+------+----------------------------------------------------+
mysql> select SERDE_ID,PARAM_KEY,REPLACE(PARAM_VALUE,'\t','\\t') from SERDE_PARAMS where SERDE_ID=263301;
+----------+----------------------+---------------------------------+
| SERDE_ID | PARAM_KEY | REPLACE(PARAM_VALUE,'\t','\\t') |
+----------+----------------------+---------------------------------+
| 263301 | field.delim | \t |
| 263301 | serialization.format | \t |
+----------+----------------------+---------------------------------+
2.6 PARTITIONS PARTITION_KEY 和 PARTITION_KEY_VALS (分区)
PARTITION_KEYS
描述:
PARTITION_KEYS 保存了所有分区表用于分区的字段
例子:
通过PARTITION_KEYS查看acorn_3g.user_act的分区信息,可看到该表是一个分区表,分区字段为log_date,其中INTEGER_IDX为分区字段的序号,和分区字段一一对应
mysql> desc PARTITION_KEYS;
+--------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+-------+
| TBL_ID | bigint(20) | NO | PRI | NULL | |
| PKEY_COMMENT | varchar(4000) | YES | | NULL | |
| PKEY_NAME | varchar(128) | NO | PRI | NULL | |
| PKEY_TYPE | varchar(767) | NO | | NULL | |
| INTEGER_IDX | int(11) | NO | | NULL | |
+--------------+---------------+------+-----+---------+-------+
mysql> select * FROM PARTITION_KEYS WHERE TBL_ID=41231;
+--------+--------------+-----------+-----------+-------------+
| TBL_ID | PKEY_COMMENT | PKEY_NAME | PKEY_TYPE | INTEGER_IDX |
+--------+--------------+-----------+-----------+-------------+
| 41231 | NULL | log_date | string | 0 |
+--------+--------------+-----------+-----------+-------------+
PARTITIONS
描述:
PARTITIONS存储了Hive数据仓库总所有的分区信息,每个分区由PART_ID标识,其中TBL_ID为隶属的Table,SD_ID为隶属的SDS(见2.3)
例子:
通过PARTITIONS表查看acorn_3g.user_act表的分区信息,如PART_ID为168301,名字为log_date=2013-03-01,SD_ID为231621
mysql> desc PARTITIONS;
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| PART_ID | bigint(20) | NO | PRI | NULL | |
| CREATE_TIME | int(11) | NO | | NULL | |
| LAST_ACCESS_TIME | int(11) | NO | | NULL | |
| PART_NAME | varchar(767) | YES | MUL | NULL | |
| SD_ID | bigint(20) | YES | MUL | NULL | |
| TBL_ID | bigint(20) | YES | MUL | NULL | |
+------------------+--------------+------+-----+---------+-------+
mysql> select * FROM PARTITIONS WHERE TBL_ID=41231 order by PART_NAME limit 5;
+---------+-------------+------------------+---------------------+--------+--------+
| PART_ID | CREATE_TIME | LAST_ACCESS_TIME | PART_NAME | SD_ID | TBL_ID |
+---------+-------------+------------------+---------------------+--------+--------+
| 168301 | 1366259946 | 0 | log_date=2013-03-01 | 231621 | 41231 |
| 168321 | 1366260063 | 0 | log_date=2013-03-02 | 231641 | 41231 |
| 168331 | 1366260176 | 0 | log_date=2013-03-03 | 231651 | 41231 |
| 168346 | 1366260298 | 0 | log_date=2013-03-04 | 231666 | 41231 |
| 168361 | 1366260398 | 0 | log_date=2013-03-05 | 231681 | 41231 |
+---------+-------------+------------------+---------------------+--------+--------+
PARTITION_KEY_VALS
描述:
PARTITION_KEY_VALS 存储了PARTITION_KEY中描述的分区字段的值,通常配合PARTITIONS 和PARTITION_KEYS表使用。
例子:
查看分区PART_ID=168301各分区字段的值,其中PARTITION_KEY_VALS存储了所有分区字段序号(INTEGER_IDX)和值(PART_KEY_VAL)间的对应关系。本例中acorn_3g.user_act PART_ID=168301分区log_date字段的值为‘2013-03-01’
mysql> select pk.PKEY_NAME,pk.PKEY_TYPE,pk.INTEGER_IDX,pkv.PART_KEY_VAL from PARTITION_KEYS pk,PARTITION_KEY_VALS pkv
where pk.INTEGER_IDX=pkv.INTEGER_IDX and pk.TBL_ID=41231 and pkv.PART_ID=168301;
+-----------+-----------+-------------+--------------+
| PKEY_NAME | PKEY_TYPE | INTEGER_IDX | PART_KEY_VAL |
+-----------+-----------+-------------+--------------+
| log_date | string | 0 | 2013-03-01 |
+-----------+-----------+-------------+--------------+
2.7 BUCKET 相关表
描述
BUCKETING_COLS表描述了所有采用了分桶技术的SDS,目前公司未用BUCKET,//TODO
mysql> desc BUCKETING_COLS;
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| SD_ID | bigint(20) | NO | PRI | NULL | |
| BUCKET_COL_NAME | varchar(256) | YES | | NULL | |
| INTEGER_IDX | int(11) | NO | PRI | NULL | |
+-----------------+--------------+------+-----+---------+-------+
2.8 PRIVS 权限管理相关表
TBL_PRIVS DB_PRIVS PART_PRIVS 等,目前Hive在权限管理方面远不及关系数据库,公司也未对权限进行统一管理。
2.9 SKEW 数据倾斜相关表
相比0.8版本,0.11元数据增加了数据倾斜相关的表 SKEWED_COL_NAMES SKEWED_COL_VALUE_LOC_MAP SKEWED_STRING_LIST SKEWED_STRING_LIST_VALUES SKEWED_VALUES ,这些高级特性还在测试阶段,目前公司没有用到。
2.3 其他
如VERSION 描述版本信息,这类表开发者不用太关心。
发表评论
-
hive + hbase
2015-01-04 10:42 772环境配置: hadoop-2.0.0-cdh4.3.0 (4 ... -
hive 数据倾斜
2014-08-27 09:03 685链接:http://www.alidata.org/archi ... -
hive 分通总结
2014-08-27 08:42 574总结分析: 1. 定义了桶,但要生成桶的数据,只能是由其他表 ... -
深入了解Hive Index具体实现
2014-08-25 08:51 737索引是标准的数据库技术,hive 0.7版本之后支持索引。hi ... -
explain hive index
2014-08-24 16:44 1145设置索引: 使用聚合索引优化groupby操作 hive> ... -
Hive 中内部表与外部表的区别与创建方法
2014-08-15 17:11 761分类: Hive 2013-12-07 11:56 ... -
hive map和reduce的控制
2014-08-15 16:14 623一、 控制hive任务中的map数: 1. 通 ... -
hive 压缩策略
2014-08-15 15:16 1767Hive使用的是Hadoop的文件 ... -
hive 在mysql中创建备用数据库
2014-08-15 09:21 880修改hive-site.xml <property> ... -
HIVE 窗口及分析函数
2014-08-11 16:21 1187HIVE 窗口及分析函数 使 ... -
hive 内置函数
2014-08-11 09:06 30681.sort_array(): sort_array(arra ... -
hive lateral view
2014-08-09 14:59 2025通过Lateral view可以方便的将UDTF得到的行转列的 ... -
hive数据的导出
2014-07-28 21:53 444在本博客的《Hive几种数据导入方式》文章中,谈到了Hive中 ... -
hive udaf
2014-07-25 16:11 752package com.lwz.udaf; import o ... -
hive自定义InputFormat
2014-07-25 09:13 861自定义分隔符 package com.lwz.inputf; ... -
HiveServer2连接ZooKeeper出现Too many connections问题的解决
2014-07-24 08:49 1764HiveServer2连接ZooKeeper出现Too man ... -
hive 常用命令
2014-07-17 22:22 6931.hive通过外部设置参数传入脚本中: hiv ... -
CouderaHadoop中hive的Hook扩展
2014-07-16 21:18 3332最近在做关于CDH4.3.0的hive封装,其中遇到了很多问题 ... -
利用SemanticAnalyzerHook回过滤不加分区条件的Hive查询
2014-07-16 16:43 1466我们Hadoop集群中将近百分之80的作业是通过Hive来提交 ... -
hive 的常用命令
2014-07-16 10:07 0设置、查看hive当前的角色: set sys ...
相关推荐
在使用MySQL作为Hive元数据存储时,需要配置Hive-site.xml文件,设置`javax.jdo.option.ConnectionURL`、`javax.jdo.option.ConnectionDriverName`、`javax.jdo.option.ConnectionUserName`和`javax.jdo.option....
通常,Hive元数据默认存储在MySQL或Derby等关系型数据库中。然而,为了适应更复杂的业务需求和更高的性能,我们可以选择将Hive元数据存储在达梦数据库中。本文将详细介绍如何配置Hive metastore以使用达梦数据库。 ...
4. **MySQL元数据存储**: 在Hive中,元数据通常存储在关系型数据库中,如MySQL,用于跟踪表和分区的位置、列信息、分区信息等。`mysql-connector-java-5.1.38.jar`就是用来连接Hive到MySQL元数据存储的必要组件。 5...
由于Hive元数据需要频繁地更新和修改,因此不适合存储在HDFS中。Hive将元数据存储在一个独立的数据库中,如MySQL或Derby数据库。这种方式能够确保元数据的高效管理和维护。 要配置Hive元数据的存储方式,可以在`...
元数据库存储了关于Hive表、列、分区等对象的所有元数据信息,使得Hive能够理解数据的结构和位置,从而执行查询。 元数据库通常存储在关系数据库管理系统(RDBMS)中,例如MySQL或Derby。在本例中,我们以Derby为例...
1. **元数据透明度**:与PostgreSQL等开源RDBMS相比,Hive的元数据更加透明,用户可以直接访问和理解元数据表的内容。而在Oracle等商业化系统中,元数据通常被封装,对外不直接可见。 2. **ID管理**:Hive的`...
因此,Kettle需要这个驱动来连接到存储Hive元数据的MySQL数据库,以便获取表定义和其他相关信息。 5. **lib文件夹**: 压缩包中的"lib"文件夹通常包含所有这些必要的JAR包。在Kettle中,这些JAR包需要被添加到...
通过以上步骤,你就成功地在Hadoop上的Hive环境中搭建了一个与MySQL连接的系统,实现了Hive元数据的存储以及数据的交互。这种方式使得Hive能够利用MySQL的稳定性和成熟性,同时也保留了Hadoop处理大数据的能力。
元数据存储在Hive的元数据存储系统(通常是MySQL或Derby)。这些元数据使得Hive能够理解和解析用户的SQL查询,并将其转换为适合MapReduce或Tez等计算框架的任务。 在这个压缩包中,有两个主要的文件位于"gulivideo...
Hive提供了数据整合、元数据管理、查询和分析等功能,是大数据生态中的重要组成部分。"hive相关jar包"指的是为了与Hive交互、执行Hive查询所必需的Java库文件。这些jar包包含了Hive的执行引擎、元数据存储以及SQL...
表的元数据保存传统的数据库的表中,当前Hive只支持Derby和MySQL数据库。 内部表:Hive中的表和传统数据库中的表在概念上是类似的,Hive的每个表都有自己的存储目录,除了外部表外,所有的表数据都存放在配置在hive...
1. **Hive架构**:Hive主要由四个组件组成:客户端、元数据存储、Hive服务器和执行器。客户端是用户接口,用于提交查询;元数据存储通常使用MySQL或Derby,保存表名、列名等信息;Hive服务器解析并优化查询,生成...
2. **Hive元数据管理**:了解如何创建、修改和删除表及分区。 3. **性能优化**:学习如何通过分区、桶、选择合适的数据格式和存储方式来提升性能。 4. **与其他系统集成**:如与Pig、HBase、Spark等的集成使用。 5. ...
3. 通过配置文件使Hive能够连接到MySQL数据库,并将元数据存储在MySQL中。 综合以上内容,安装Hive组件并配置它与MySQL关联需要遵循一系列详细的步骤来确保系统的正确配置和运行。整个过程需要确保对Linux命令行有...
3. 配置 Hive 配置文件:修改 `conf/hive-site.xml` 文件,设置 Hadoop 相关路径,例如 HDFS 的 namenode 地址、Hive 的元数据存储位置(通常使用 MySQL 或 Derby)等。 4. 初始化元数据:执行 `schematool -...
根据`hivesite.xml`配置的数据库类型,创建对应的数据库和表。如果是MySQL,可以使用以下SQL脚本: ```sql CREATE DATABASE metastore; GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'localhost' IDENTIFIED BY ...
客户端是用户交互的接口,元数据存储通常在MySQL或Derby数据库中,保存表和分区的信息。驱动器解析SQL查询并生成执行计划,执行器负责在Hadoop集群上执行这些计划。 2. **HiveQL**: HiveQL是Hive的SQL方言,支持...
4. **配置Hive的MySQL依赖**(可选):如果使用外部元存储,需要配置MySQL连接参数,并在MySQL中创建对应的Hive元数据表。 5. **启动Hive**:启动Hive的服务,包括Metastore Server(默认端口9083)和Hive CLI,...
4. **创建 Metastore 数据库**:Hive 使用 Metastore 服务存储元数据,可以选择 MySQL、Derby 或其他兼容的数据库。根据配置文件中的信息创建对应的数据库和用户。 5. **启动 Hive**:启动 Hive 服务,可以使用命令...