hive 中修改 map 类型切分方式 及hive元数据问题

hive 中 经常用到的 map类型

mapString:String

其中 map中各元素的切分方式 通过 colelction.delime 确定

hive 中修改 map 类型切分方式 及hive元数据问题

问题:找了网上 没找到其修改colelction.delime 的方式 所以打起了 修改元数据的方式

记录小 最后定为SERDE_PARAMS 定义了表中 字段切割方式 通过修改此表 修改了 colelction.delime 的切分方式。然后重新加载分区 。字段值显示正确

查找路径
DBS -》TBLS -》SERDE_PARAMS

hive 元数据表

元数据包含的所有表

hive 中修改 map 类型切分方式 及hive元数据问题

Hive数据库相关的元数据表(DBS、DATABASE_PARAMS)

select * from dbs
该表存储Hive中所有数据库的基本信息,字段如下:
数据库ID 数据库描述 数据库HDFS路径 数据库名 数据库所有者用户名 所有者角色
DB_ID DESC DB_LOCATION_URI NAME OWNER_NAME OWNER_TYPE
1 Default Hive database hdfs://192.168.137.130:9000/user/hive/warehouse default public ROLE
6 NULL hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db hive hadoop USER
select * from database_params;
该表存储数据库的相关参数,在CREATE DATABASE时候用
WITH DBPROPERTIES (property_name=property_value, …)指定的参数。
元数据表字段 说明 示例数据
DB_ID 数据库ID 2
PARAM_KEY 参数名 createdby
PARAM_VALUE 参数值 lxw1234
Hive表和视图相关的元数据表

主要有TBLS、TABLE_PARAMS、TBL_PRIVS,这三张表通过TBL_ID关联。

select * from tbls;
该表中存储Hive表、视图、索引表的基本信息。
表ID 创建时间 数据库ID 上次访问时间 所有者 保留字段 序列化配置信息( 对应SDS表中的SD_ID) 表名 表类型 视图的详细HQL语句 视图的原始HQL语句
TBL_ID CREATE_TIME DB_ID LAST_ACCESS_TIME OWNER RETENTION SD_ID TBL_NAME TBL_TYPE VIEW_EXPANDED_TEXT VIEW_ORIGINAL_TEXT
1 1519944170 6 0 hadoop 0 1 page_views MANAGED_TABLE NULL NULL
2 1519944313 6 0 hadoop 0 2 page_views_bzip2 MANAGED_TABLE NULL NULL
3 1519944819 6 0 hadoop 0 3 page_views_snappy MANAGED_TABLE NULL NULL
select * from table_params;
该表存储表/视图的属性信息。
表ID(对应TBLS的tbl_id) 属性名 属性值
TBL_ID PARAM_KEY PARAM_VALUE
1 COLUMN_STATS_ACCURATE true
1 numFiles 1
1 numRows 0
1 rawDataSize 0
1 totalSize 19014993
1 transient_lastDdlTime 1519944212
2 COLUMN_STATS_ACCURATE true
2 numFiles 1
2 numRows 100000
2 rawDataSize 18914993
2 totalSize 3814674
2 transient_lastDdlTime 1519944314
TBL_PRIVS
该表存储表/视图的授权信息
Hive文件存储信息相关的元数据表

主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS
由于HDFS支持的文件格式很多,而建Hive表时候也可以指定各种文件格式,Hive在将HQL解析成MapReduce时候,需要知道去哪里,使用哪种格式去读写HDFS文件,而这些信息就保存在这几张表中。

select * from sds;
文件存储的基本信息:
存储信息ID(对应tbls表中的SD_ID ) 字段信息ID(对应column_v2 的CD_ID) 文件输入格式 是否压缩 是否以子目录存储 HDFS路径 分桶数量 文件输出格式 序列化类ID
SD_ID CD_ID INPUT_FORMAT IS_COMPRESSED IS_STOREDASSUBDIRECTORIES LOCATION NUM_BUCKETS OUTPUT_FORMAT SERDE_ID
1 1 org.apache.hadoop.mapred.TextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 1
2 2 org.apache.hadoop.mapred.TextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_bzip2 -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 2
3 3 org.apache.hadoop.mapred.TextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_snappy -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 3
21 21 org.apache.hadoop.mapred.TextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/tt -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 21
22 22 org.apache.hadoop.mapred.SequenceFileInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_seq -1 org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat 22
23 23 org.apache.hadoop.hive.ql.io.RCFileInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_rcfile -1 org.apache.hadoop.hive.ql.io.RCFileOutputFormat 23
24 24 org.apache.hadoop.hive.ql.io.orc.OrcInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_orc_zlib -1 org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat 24
27 27 com.hadoop.mapred.DeprecatedLzoTextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_lzo_index -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 27
SD_PARAMS
该表存储Hive存储的属性信息,在创建表时候使用
STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。

select * from serdes;
该表存储序列化使用的类信息

序列化类配置ID(对应SDS的 SERDE_ID) 序列化类别名 序列化类
SERDE_ID NAME SLIB
1 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
2 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
3 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
21 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
22 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
23 NULL org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
24 NULL org.apache.hadoop.hive.ql.io.orc.OrcSerde
select * from serde_params;
该表存储序列化的一些属性、格式信息,比如:行、列分隔符
序列化类配置ID(对应SDS的 SERDE_ID) 属性名 属性值
SERDE_ID PARAM_KEY PARAM_VALUE
1 field.delim
1 serialization.format
2 field.delim
2 serialization.format
3 field.delim
3 serialization.format
21 field.delim
Hive表字段相关的元数据表

select * from columns_v2;
表的字段信息
字段信息ID(对应SDS 表CD_ID) 字段注释 字段名 字段类型 字段顺序
CD_ID COMMENT COLUMN_NAME TYPE_NAME INTEGER_IDX
1 NULL city_id string 6
1 NULL end_user_id string 5
1 NULL ip string 4
1 NULL referer string 3
1 NULL session_id string 2
1 NULL track_time string 0
1 NULL url string 1
2 NULL city_id string 6
2 NULL end_user_id string 5
2 NULL ip string 4
2 NULL referer string 3
2 NULL session_id string 2
2 NULL track_time string 0
2 NULL url string 1
Hive表分区相关的元数据表

主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS

select * from partitions ;
分区的基本信息
分区ID 分区创建时间 最后一次访问时间 分区名 分区存储ID 表ID
PART_ID CREATE_TIME LAST_ACCESS_TIME PART_NAME SD_ID TBL_ID
1 1506226696 pt=2015-06-12 21 2
select * from partition_keys;
分区的字段信息
元数据表字段 说明 示例数据
TBL_ID 表ID 2
PKEY_COMMENT 分区字段说明
PKEY_NAME 分区字段名 pt
PKEY_TYPE 分区字段类型 string
INTEGER_IDX 分区字段顺序 1
select * from partition_key_vals;
该表存储分区字段值
元数据表字段 说明 示例数据
PART_ID 分区ID 2
PART_KEY_VAL 分区字段值 2015-06-12
INTEGER_IDX 分区字段值顺序 0
select * from partition_params;
该表存储分区的属性信息。
元数据表字段 说明 示例数据
PART_ID 分区ID 2
PARAM_KEY 分区属性名 numFiles、numRows、rawDataSize、totalSize、transient_lastDdlTime
PARAM_VALUE 分区属性值 15、502195
其他不常用的元数据表

表明 作用
DB_PRIVS 数据库权限信息表。通过GRANT语句对数据库授权后,将会在这里存储。
IDXS 索引表,存储Hive索引相关的元数据
INDEX_PARAMS 索引相关的属性信息。
TAB_COL_STATS 表字段的统计信息。使用ANALYZE语句对表字段分析后记录在这里。
TBL_COL_PRIVS 表字段的授权信息
PART_PRIVS 分区的授权信息
PART_COL_STATS 分区字段的统计信息。
PART_COL_PRIVS 分区字段的权限信息。
FUNCS 用户注册的函数信息
FUNC_RU 用户注册函数的资源信息

最后我们总结下他们之间的关系图:
hive 中修改 map 类型切分方式 及hive元数据问题

参考:https://blog.csdn.net/yu0_zhang0/article/details/80697913