我是靠谱客的博主 文艺宝马,最近开发中收集的这篇文章主要介绍探索Hive元数据_sql杂记,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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杂记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部