Hive合并小文件:hive归档(archive)

浩客1年前技术文章1023

一、概述

      在HDFS中数据和元数据分别由DataNode和NameNode负责,这些元数据每个对象一般占用大约150个字节。大量的小文件相对于大文件会占用大量的NameNode内存。对NameNode内存管理产生巨大挑战。

      使用 Hadoop 归档是减少分区中文件数量的一种方法。Hive 内置支持将现有分区中的文件转换为 Hadoop 档案 (HAR),这样由 100 多个文件组成的分区现在只占用 ~3 个文件(取决于设置)。不过,由于从 HAR 中读取文件会产生额外开销,因此查询速度可能会变慢。请注意,归档不会压缩文件--HAR 类似于 Unix 的 tar 命令。

注意:

  1. 存档的分区不能用 INSERT OVERWRITE 覆盖。必须先取消存档分区。

  2. 如果两个进程同时尝试归档同一个分区,可能会发生问题。

  3. 当存档一个分区时,会使用该分区原始位置的文件(如/warehouse/table/ds=1)创建一个HAR。分区的父目录被指定为与原始位置相同,生成的存档名为 "data.har"。将存档移至原始目录下(如 /warehouse/table/ds=1/data.har),并更改分区的位置以指向存档

二、测试过程

#创建测试表
create table smalltable(id bigint, t bigint, uid string, keyword string, 
url_rank int, click_num int, click_url string) 
PARTITIONED BY (dt STRING)
row format delimited fields terminated by '\t'
STORED AS ORC
TBLPROPERTIES ("orc.compress"="ZLIB") ;

#向测试表中多次插入数据
insert into table smalltable PARTITION (dt=20231220) select id,t,uid,keyword,url_rank,click_num,click_url from smalltable_tmp where dt=xxxx;

#归档
set hive.archive.enabled = true;
alter table smalltable ARCHIVE PARTITION (dt = 20231220);

#解档
alter table smalltable UNARCHIVE PARTITION (dt = 20231220);
归档操作前:

2222222.png

归档操作:

解档操作:

image777777777.png


标签: hive

相关文章

Hive优化之SQL的优化(三)

Hive优化之SQL的优化(三)

     Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hi...

Hive压测之开源Hive基准测试工具(hive-testbench-hive14)

Hive压测之开源Hive基准测试工具(hive-testbench-hive14)

此文章禁止转载概述Hive基准测试工具工具,可用来造数测试Hive基本性能。TPC-DS:提供一个公平和诚实的业务和数据模型,99个案例TPC-H:面向商品零售业的决策支持系统测试基准,定义了8张表,...

Hive优化之监控(四)

Hive优化之监控(四)

    Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hive调优是必...

Hive优化之配置参数的优化(一)

Hive优化之配置参数的优化(一)

 Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hive调优是必不可少的一项技能。影响Hive效率的...

Hive架构图及Hive SQL的执行流程

Hive架构图及Hive SQL的执行流程

1、Hive产生背景MapReduce编程的不便性HDFS上的文件缺少Schema(表名,名称,ID等,为数据库对象的集合)2、Hive是什么Hive的使用场景是什么?基于Hadoop做一些数据清洗啊...

hive执行count和spark执行count结果不一致

hive执行count和spark执行count结果不一致

【组件版本】hive on mr、spark【问题现象】hive 执行count语句,结果条数为0,spark执行count语句能正常显示count数【详细描述】hive 执行count语句:显示co...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。