Hive中的回收站是通过HDFS的Trash功能实现,Trash功能可以将HDFS中删除的文件放入回收站目录(默认回收站目录/user/root/.Trash/Current,其中回收站目录中的root会根据当前操作HDFS的用户名而变化),防止用户意外删除文件,出现无法找回的情况。Hive内部表的数据存放在HDFS中,并且删除内部表时数据也会一同被删除,所以为了防止用户意外删除Hive内部表造成数据丢失的情况,可以在删除内部表的语句中指定PURGE,将删除的内部表数据放入回收站目录,后续复制回收站目录中删除的内部表数据即可。
HDFS默认情况下并没有开启Trash功能,需要在Hadoop的配置文件core-site.xml的<configuration/>标签中添加如下配置内容。
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash,checkpoint.interval</name>
<valpe>60</value>
</property>
上述配置内容中,参数fs.trash.interval表示回收站目录中文件保存的时间,该参数的默认值为0(分钟),也就是不保存,这里指定参数值为1440,也就是被删除的文件会在回收站目录保存一天;参数fs.trash.checkpoint.interval表示NameNode检查回收站目录间隔的时长,这里指定参数值为60,也就是NameNode每间隔一小时检查一次回收站目录,永久删除回收站目录中存放时长超过一天的文件。
在3台虚拟机Node_01、Node_02和Node_03的Hadoop配置文件core-site.xml中分别添加上述内容,添加完成后需要重新启动Hadoop集群使配置内容生效。