背景
Hive可以把分区表的分区归档成HAR文件,也可以把归档完的分区进行解压。
以下步骤基于Hadoop2.8.5和Hive2.3.5
步骤
1、把hadoopHome/share/hadoop/tools/lib/hadoop-archives-2.8.5.jar放到hiveHome/lib目录下
2、在hiveHome/conf/hive-site.xml中使能分区归档
<property>
<name>hive.archive.enabled</name>
<value>true</value>
</property>
3、对于某个分区表,分区归档命令如下
alter table employees archive partition(country='US');
然后可以在hive中查看压缩结果
dfs -ls /user/hive/warehouse/employees/country=US
结果如下,可以看到在分区目录下生成了data.har文件,就是归档文件
4、对于归档后的分区表,解压的命令如下所示
alter table employees unarchive partition(country='US');
然后可以在hive中查看压缩结果
dfs -ls /user/hive/warehouse/employees/country=US
输出如下
结语
关于所需的jar包,《Hive编程指南》中说的是hadoop-a.b.c-tools.jar,可能我用的hadoop版本比较新,所以我的HadoopHome下没有这个jar包,用网上下载的还会报错。最后,我发现我的HadoopHome下直接有归档相关的jar包hadoop-archives-2.8.5.jar,把它放到hiveHome的lib目录下,重启hive客户端就不会有错了。