【Hive实战】Hive治理方向探讨(请留意见)

Hive治理方向探讨

全篇数据已20230618分区的数据为准

Hive治理项

治理临时性质的表

  1. 临时表未及时清理,或按时间维度建表(亦是分区表类)
  2. 临时属性却以常规表标记。

诉求: 能够更好的识别出临时表,对超期临时表进行删除程序。

控制分区表的分区数量和分区层级

内部表的分区表数量 99,709

内部表的非分区表数量 222,555

外部表的分区表数量 7,842

外部表的非分区表数量 719

表类型分布数量

表类型 表数量 占比
MANAGED_TABLE 322264 97.28%
VIRTUAL_VIEW 446 0.13%
INDEX_TABLE 3 -
EXTERNAL_TABLE 8561 2.58%

hive分区数量分布情况

按时间(天)的维度进行计算分区数区间

时间区间 分区数区间 表数量 占比
半年(6个月) [1,180] 29148 34.33%
1年 [181,365] 5914 6.96%
2年 [366,730] 12069 14.21%
3年 [731,1095] 12314 14.50%
5年 [1096,1825] 18476 21.76%
10年 [1826,3650] 5751 6.77%
20年 [3651,7300] 401 0.47%
30年 [7301,10950] 156 0.18%
30年以上 [10950,+∞] 687 0.81%
目前5年以上数据定义为存疑 [1826,+∞] 6995 8%

hive分区表的层级分布情况

分区层级 此层级的表数量 分区级别下的分区数
1 105475 74891729
2 2072 8241483
>2 7 2141

超过2层分区级别的分区表

TBL_NAME OWNER PART_LEVEL

诉求: 识别出分区的数量和分区的层级,对数据异常的分区表(分区数量超过1826个,分区层级超过2层的)进行处理。

原则上分区层级不超过2层,单个表(1级分区)的最大分区数不超过2000,单个表(2级分区)的最大分区数不超过5000。

限制建表时使用的存储格式

存储格式

  • 低效存储格式(TextInputFormatRCFileInputFormat

  • 废弃存储格式(DeprecatedLzoTextInputFormat,DeprecatedRawMultiInputFormat

  • 无格式

INPUT_FORMAT分布情况

INPUT_FORMAT类 数量 占比
com.hadoop.mapred.DeprecatedLzoTextInputFormat 183962 0.220%
com.twitter.elephantbird.mapred.input.DeprecatedRawMultiInputFormat 7889 0.009%
org.apache.hadoop.hive.ql.io.orc.OrcInputFormat 29966343 35.902%
org.apache.hadoop.mapred.TextInputFormat 18777680 22.497%
org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat 67633 0.081%
************************************************************1 6252676 7.491%
org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat 2522173 3.022%
org.apache.hadoop.hive.ql.io.RCFileInputFormat 25427575 30.464%
org.elasticsearch.hadoop.hive.EsHiveInputFormat 3 -
org.apache.hadoop.mapred.SequenceFileInputFormat 15274 0.018%
************************************************************ 2 9643 0.012%
************************************************************ 3 2297 0.003%
************************************************************ 4 228137 0.273%
************************************************************ 5 3023 0.004%
1982 0.002%

OUTPUT_FORMAT分布情况

OUTPUT_FORMAT类 数量 占比
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 25443778 30.485%
org.elasticsearch.hadoop.hive.EsHiveOutputFormat 4 0.000%
org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat 67633 0.081%
org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat 29966344 35.903%
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat 15556 0.019%
org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat 13356 0.016%
org.apache.hadoop.hive.ql.io.HiveNullValueSequenceFileOutputFormat 7889 0.009%
org.apache.hadoop.hive.ql.io.RCFileOutputFormat 25427575 30.465%
org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat 2522173 3.022%
1982 -

分区的格式为空的内部表

TBL_NAME OWNER TBL_TYPE

格式为空的非分区的内部表

TBL_NAME OWNER TBL_TYPE

诉求

  • 控制文件格式的选项,若无特殊需求,以ORC和Parquet类的格式为主。

    数据一般按以下结构进行分层存储:

    数据贴源层
    数据加工汇总层
    应用层
    • 贴源层:该层是将数据源中的数据直接抽取过来的,数据类型以文本为主,需要保持数据原样。数据不会发生变化,在初次清洗之后被读取的概率也不大,可以采用ORC格式文件。

    • 加工汇总层:该层是数仓的数据加工组织阶段,会做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。采用ORC能够较好支持该阶段的数据ACID需求。

    • 应用层:该层的数据是供数据分析和数据挖掘使用,比如常用的数据报表就是存在这里。此时的数据已经具备了对外部的直接使用的能力。数据的可能具备了一定层度的结构化,而Parquet在实现复杂的嵌套结构方面,比ORC更具有优势。所以该层一般采用Parquet。

      主要考虑的因素

      • 数据的变更性
      • 数据的结构复杂性
      • 数据的读写效率性

表或分区记录的location对应的HDFS路径实际不存在

可参考里面的语句参考

诉求:这样情况的表或分区是否已停止使用,如果不使用了,就删除。若使用,则需要修正。

表级路径应是分区路径的前缀

内部分区表下的 分区不以表路径为前缀的分区数量268,651&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顧棟

若对你有帮助,望对作者鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值