赞
踩
1.小文件过多,占用HDFS中namenode的内存
2.小文件过多,启动过多的maptask,maptask的启动和调度消耗很多内存和时间,启动时间比job执行时间还长
1.输入合并小文件,减小map数
方式1:通过设置参数来合并小文件
set mapred.max.split.size=256000000; 每个MAP最大输入大小
set mapred.min.split.size.per.node=100 000 000; 一个节点上split的至少的大小,决定了多个datanode上的文件是否需要合并
set mapred.min.split.size.per.rack=100 000 000;一个交换机下split的至少的大小,决定了多个交换机上的文件是否需要合并
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;执行map前进行小文件合并
方式2:通过sql来合并小文件
新建一个中间表,通过insert overwrite table tmp_xxx select * from xxx;来减少小文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。