更新时间:2025-08-01 GMT+08:00

配置Hive目录旧数据自动移除至回收站

操作场景

开启Hive目录旧数据自动移除至回收站功能,执行写目录insert overwrite directory "/path1" ...命令成功之后,会将旧数据移除到回收站而不是直接删除,并且同时限制该目录不能为Hive元数据库中已经存在的数据库路径。

Hive目录旧数据自动移除至回收站的功能,主要用于数据清理、误删除恢复、数据迁移以及存储空间管理等场景。通过回收站功能,用户可以在确保数据安全性和合规性的同时,灵活管理旧数据,避免数据丢失或存储空间浪费。

操作步骤

  1. 登录FusionInsight Manager页面,选择“集群 > 服务 > Hive > 配置 > 全部配置”。
  2. 选择“HiveServer(角色) > 自定义”,在参数文件“hive-site.xml”中添加自定义参数,设置“名称”为“hive.overwrite.directory.move.trash”,参数取值包括:

    • true:Hive执行insert overwrite操作后,会将旧数据移除到回收站而不是直接删除。
    • false:默认值,Hive执行insert overwrite操作会直接删除目标目录中的旧数据。

    需将参数值设置为“true”。

  3. 单击“保存”保存配置。单击“实例”,勾选所有Hive实例,选择“更多 > 重启实例”,输入当前用户密码,单击“确定”重启所有Hive实例。
  4. 以客户端安装用户登录安装客户端的节点。

    下载并安装集群客户端的具体操作,请参考安装MRS集群客户端

  5. 执行以下命令配置环境变量并认证用户。

    切换至客户端安装目录:

    cd 客户端安装目录

    加载环境变量:

    source bigdata_env

    认证用户,集群未启用Kerberos认证(普通模式)请跳过该步骤:

    kinit Hive业务用户

  6. 执行以下命令创建HDFS目录,例如“/user/test”:

    hdfs dfs -mkdir /user/test

  7. 执行以下命令登录Hive客户端:

    beeline

  8. 创建Hive表并插入数据。例如创建表“test”:

    执行以下命令创建表,例如“test”:
    create table test(id int,name string);
    执行以下命令向表中插入数据:
    insert into table test(id,name) values("11","A");

  9. 执行以下命令查询Hive表数据并写入至HDFS中,例如“/user/test”目录下:

    insert overwrite directory '/user/test' select * from test;

    再次执行以下命令查询Hive表列数据并写入至HDFS中:

    insert overwrite directory '/user/test' select id from test;

    命令执行成功后,第一次写入“/user/test”目录中的数据不会被删除,而是移除到回收站目录“.Trash”中,例如移除至“/user/用户名/.Trash/xxx/user/test/000000_0” 文件中,内容为:

    11A