概述
1、探索Hive元数据
涉及表说明:
- column_v2:表示该分区、表存储的字段信息,包含字段名称和类型和字段偏移。
- sds:保存数据存储的信息,包含分区、表存储的HDFS路径地址等。
- tbls:记录Hive数据库创建的所有表,有tbl_name、tbl_id等字段
如果表结构有变动,那么cd_id会改变。如果想查看变动前的表cd_id,可通过下面语句查询到结果数量与表分区数量相等:
select * from sds where location like '%table_name%';
再通过下面语句获取表分区的结构:
select * from columns_v2 where cd_id=xxx;
表有一个sd_id,表每个分区的sd_id各不相同,且和表的sd_id不一样。
tbls存储的是当前表结构sd_id,其sds对应的cd_id是最新表结构。
通过元数据查询表字段及分区信息:
select
t1.tbl_id
,t2.`NAME` as db_name
,t1.tbl_name
,t3.param_value as table_comment
,t5.comment as column_comment
,t4.cd_id
,t5.column_name
,t5.type_name
,t5.integer_idx
,0 as partition_key_flag
from tbls t1
left join dbs t2
on t1.db_id = t2.db_id
left join table_params t3
on t1.tbl_id = t3.tbl_id
and t3.param_key = 'comment'
left join sds t4
on t1.sd_id = t4.sd_id
join columns_v2 t5
on t4.cd_id = t5.cd_id
union all
select
t1.tbl_id
,t2.`NAME` as db_name
,t1.tbl_name
,t3.param_value as table_comment
,t5.pkey_comment as column_comment
,t4.cd_id
,t5.pkey_name as column_name
,t5.pkey_type as type_name
,t5.integer_idx
,1 as partition_key_flag
from tbls t1
left join dbs t2
on t1.db_id = t2.db_id
left join table_params t3
on t1.tbl_id = t3.tbl_id
and t3.param_key = 'comment'
left join sds t4
on t1.sd_id = t4.sd_id
join partition_keys t5
on t1.tbl_id = t5.tbl_id;
2、hql、mysql: greatest
可实现最小值为x、least
可实现最大值为x。greatest
/ least
获取取最大/小值。
select 1 as seq,greatest(0,1,-1) as a --取函数内字段值的最大值,这里返回1
union all
select 2 as seq,least(0,1,-1) as a --取函数内字段值的最小值,这里返回-1
union all
select 3 as seq,greatest(0,null,-1) as a --由于字段存在null,函数值返回null
union all
select 4 as seq,least(0,null,-1) as a --由于字段存在null,函数值返回null
3、获取日期,hql:to_date(timestr)
;mysql:date(timestr)
最后
以上就是文艺宝马为你收集整理的探索Hive元数据_sql杂记的全部内容,希望文章能够帮你解决探索Hive元数据_sql杂记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复