0


设置hive表生命周期并自动进行数据清理

背景介绍

Hive表生命周期管理对于大数据平台的管理和维护非常重要,有以下一些原因:

  1. 节省存储空间:随着时间的推移,Hive表中的数据会不断增加,历史数据不断积压。但是,并不是所有的数据都是有用的,一些旧的数据可能会变得过时或不再需要。通过生命周期管理,可以定期删除或归档过时的数据,从而节省存储空间。
  2. 提高查询性能:随着表中数据的增加,查询性能可能会下降。通过生命周期管理,可以定期删除或归档不再需要的数据和分析,从而减少查询的数据量,提高查询性能。
  3. 数据保留合规性:根据法律和合规要求,某些数据可能需要保留一段时间。通过生命周期管理,可以根据规定将数据保留一定的时间,并在到期后进行合规性的处理。
  4. 数据管理和维护:通过生命周期管理,可以更好地管理表中的数据。可以定期备份数据,进行数据质量检查和数据修复等操作,确保数据的完整性和可用性。

所以,通过进行Hive表生命周期管理,可以节省存储空间,提高查询性能,保持数据合规性,并进行数据管理和维护,从而更好地管理和维护大数据平台。

方案思路

下面简介下思路

  1. 确认生命周期规则及清理策略
  2. 设置hive表的生命周期信息
  3. 查询表属性信息及更新操作时间
  4. 查询表分区属性及更新操作时间
  5. 根据表或者分区的更新时间进行表清理操作。

简要流程示例

相关命令

以下是利用hive命令行进行生命周期管理的的方式,相关的一些命令和操作。

创建表的时候或者对表的生命周期标识的设置,这样方便我们后续进行表的标签和数据清理标识。

-- 设置表生命周期标识
alter table ${table_name} set tblproperties ('TABLE_LIFECYCLE'='365d');

-- 设置分区生命周期标识
alter table ${table_name} set tblproperties ('PARTITION_LIFECYCLE'='365d');

获取表相关信息,例如查看最新更新时间。访问时间一般未开启。

-- 查看所有的表

show tables;

-- 查看建表语句

show create table ${table_name};

--描述表的字段信息
describe ${table_name};

-- 查看所创建表的扩展信息
describe extended ${table_name};

--查看表扩展信息
show table extended like ${table_name};

--最全面的信息查看方式,能够显示出最多的信息
describe formatted  ${table_name};

获取分区表相关信息,例如分区的更新日期。

--显示表的所有分区
show partitions  ${table_name};

--显示表分区的扩展信息
describe formatted ${table_name} partition (${partition_name}=${partition_values});

最后聊聊

除了这块统一管理,通常我们在写数仓设计时候,就对表进行规划,在命名规则上对于一些业务即可做一些标识要求,例如临时表增加"_tmp"的标识,另外在ETL开发过程中,也可以对分区数据做清理的要求,例如数据写入完成后,对临时表进行drop table操作,对历史N天前分区数据进行drop partition 的 操作。

最后实现部分可以用脚本进行处理,也可以写个管理页面进行设置和定时清理的动作。


本文转载自: https://blog.csdn.net/weixin_61938673/article/details/135416110
版权归原作者 幻影889 所有, 如有侵权,请联系我们删除。

“设置hive表生命周期并自动进行数据清理”的评论:

还没有评论