HIVE合并小文件

        8.分区分桶,合并小文件
            为什么小文件需要合并?
                1.小文件过多,MR处理数据时,会产生多个MapTask,然而每个MapTask处理的数据量很少,
                那么导致MapTask启动时间大于执行时间,整体任务时间消耗较大


            如何合并小文件:

            1)在map执行前合并小文件,减少map数:CombineHiveInputFormat具有对小文件进行合并的功能(系统默认的格式)。HiveInputFormat没有对小文件合并功能。
                    set hive.input.format= org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
            
            2)在Map-Reduce的任务结束时合并小文件的设置:

                    2.1 在map-only任务结束时合并小文件,默认true
                    SET hive.merge.mapfiles = true;  
                    -- 如果有一个HIVE表,小文件过多,可以通过select * from 表 只产生一个Map
                    --     任务将原表中的小文件合并并输出至新表
                    

                    2.2 在map-reduce任务结束时合并小文件,默认false
                    SET hive.merge.mapredfiles = true;
                    合并文件的大小,默认256M
                    SET hive.merge.size.per.task = 268435456;
                    当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge
                    SET hive.merge.smallfiles.avgsize = 128000000;


            3)--限制Map,Reduce数
                set mapreduce.tasktracker.map.tasks.maximum=30;       --每个nodemanager节点上可运行的最大map任务数,默认值2,可根据实际值调整为10~100;
                set mapreduce.tasktracker.reduce.tasks.maximum=30;    --每个nodemanager节点上可运行的最大reduce任务数,默认值2,可根据实际值调整为10~100;


            4)--将多个小文件打包作为一个整体的inputsplit,减少map任务数     
                set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
                set mapreduce.input.fileinputformat.split.maxsize=128000000;         --切片大小最大值,不设置,则所有输入只启动一个map任务
                set mapreduce.input.fileinputformat.split.minsize.per.node=16000000;  --同一节点的数据块形成切片时,切片大小的最小值

            5)
                -- 最大split大小
                set mapred.max.split.size=128000000;   

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值