当前位置:   article > 正文

数据仓库 - hive 合并小文件

hive 合并小文件

小文件太多会有什么影响
(1)存储层面
1个文件块,占用namenode多大内存150字节 128G能存储多少文件块? 128 g1024m1024kb*1024byte/150字节 = 9.1亿文件块
(2)计算层面
每个小文件都会起到一个MapTask,1个MapTask默认内存1G。浪费资源。

合并小文件两种方式:
1、hive使用mr引擎

ALTER TABLEPARTITION(分区) CONCATENATE;
  • 1

只支持 RCFILE 和 ORC 文件类型
可多次执行

2、hive使用spark引擎

-- 开启shuffle并行度为x,结果会合并为3个文件
set spark.sql.shuffle.partitions=3;
insert overwrite table 表A partition(分区dt)
select *
from 表A
where 分区dt
-- 直接insert overwrite select可能不会走shuffle流程,此处重新分区,肯定会shuffle,才会起到合并小文件的作用
distribute by 某字段,rand()*10
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/727944
推荐阅读
相关标签
  

闽ICP备14008679号