hive中删除操作及HDFS回收站管理腾出空间的实操

简介: 删除hive数据时,首先明确你使用删除数据还是连同表结构也要删除,如果只是要删除数据可以选择truncate来清空表中的数据,如果要对表进行删除,首先要考虑该表是内部表还是外部表。如果是外部表要确认数据是否还需要使用,如果不需要使用了可以直接使用HDFS命令对目录进行删除。

一、删除

删除hive数据时,首先明确你使用删除数据还是连同表结构也要删除,如果只是要删除数据可以选择truncate来清空表中的数据,如果要对表进行删除,首先要考虑该表是内部表还是外部表。如果是外部表要确认数据是否还需要使用,如果不需要使用了可以直接使用HDFS命令对目录进行删除。

查询内、外部表有两个方法:
方法一:
hive shell中执行

describe extended tablename; 

查看表的详细信息,外部表 tableType 字段会显示 EXTERNAL_TABLE,内部表 tableType字段会显示MANAGD_TABLE。

方法二:
在hive shell中执行

desc formatted tablename; 

可以查看表的格式和详细信息,这里可以得到Table Type ,也可以根据Table Type知道表是内部表还是外部表。MANAGED_TABLE内部表,EXTERNAL_TABLE是外部表。

同时可以查看表的location ,直接指定的是hdfs的路径,则是外部表,如果指定的是Hive表数据存放的路径,则是内部表,hive表数据存放的路径在Hive的${HIVE_HOME}/conf/hive-site.xml配置文件中,hive.metastore.warehouse.dir属性指定的路径。

二、Hadoop回收站

Hadoop回收站trash,默认是关闭的。 可以对如下配置进行修改,回收站保留时间可以根据你的hadoop集群的存储空间、删除数据的频率、每天回收站回收的占用来决定。

1.修改conf/core-site.xml,增加

<property>  
      <name>fs.trash.interval</name>  
      <value>1440</value>  
      <description>Number of minutes between trash checkpoints.  
      If zero, the trash feature is disabled.  
      </description>  
    </property>  

默认单位是分钟。这里我设置的是1小时(60*24=1440)
在hdfs的shell中删除数据后、hive删除表后都会将数据移动到该用户目录下的.Trash目录。

如果要手动清空垃圾回收站有两种方式

1、清空回收站命令:

hdfs dfs -expunge

执行完之后会打一个checkpoint,并不会立即执行,稍后会执行清空回收站操作

2、删除.Trash目录(清理垃圾)

hadoop fs -rmr -skipTrash /user/$USER/.Trash

注意:需要添加参数: -skipTrash 才会完全删除,如果不添加,会放到另外一个.Trash

恢复回收站数据,就是将HDFS中垃圾回收站的数据移回对应表的目录中

例如:

hadoop dfs -mv /user/$USER/.Trash/Current/user/$USER/in /user/hive/warehouse
目录
相关文章
|
5天前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
103 7
|
5天前
|
SQL 分布式计算 Hadoop
[AIGC ~大数据] 深入理解Hadoop、HDFS、Hive和Spark:Java大师的大数据研究之旅
[AIGC ~大数据] 深入理解Hadoop、HDFS、Hive和Spark:Java大师的大数据研究之旅
|
5天前
|
存储 SQL 分布式计算
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
293 0
|
7月前
|
SQL 分布式计算 大数据
大数据问题排查系列 - 因HIVE 中元数据与HDFS中实际的数据不一致引起的问题的修复
大数据问题排查系列 - 因HIVE 中元数据与HDFS中实际的数据不一致引起的问题的修复
|
7月前
|
SQL 分布式计算 Java
浅析 hive udf 的正确编写和使用方式- 论姿势的重要性 - 系列三 - hdfs 相对路径与静态代码块引起的问题
浅析 hive udf 的正确编写和使用方式- 论姿势的重要性 - 系列三 - hdfs 相对路径与静态代码块引起的问题
|
SQL HIVE
Hdfs 导入Hive,时间相关的字段 导入后为NULL
Hdfs 导入Hive,时间相关的字段 导入后为NULL
72 0
|
SQL 资源调度 关系型数据库
06-PDI(Kettle)读取Hive写入HDFS,读取HDFS写入HBase中(下)
文章目录 06-PDI(Kettle)读取Hive写入HDFS,读取HDFS写入HBase中 环境准备 1.安装MySQL 1.1mysql安装参考: 1.2安装过程
06-PDI(Kettle)读取Hive写入HDFS,读取HDFS写入HBase中(下)
|
5天前
|
存储 分布式计算 Hadoop
【Hadoop】HDFS中的块是什么?
【4月更文挑战第9天】【Hadoop】HDFS中的块是什么?
|
5天前
|
存储 分布式计算 Hadoop
【Hadoop】HDFS仅支持独占写入?
【4月更文挑战第9天】【Hadoop】HDFS仅支持独占写入?
|
5天前
|
存储 分布式计算 Hadoop
【Hadoop】区分HDFS块和输入拆分
【4月更文挑战第9天】【Hadoop】区分HDFS块和输入拆分

热门文章

最新文章