2、小文件问题解决

避免mapper开启过多,导致导致的资源错配,

  1、hive小文件问题

  2、mr编程小文件问题

1、hive中的小文件问题

通过shell,产生100个小文件,目录 one100

[centos@s101 ~/one00]$ for((x=1;x<=100;x+=1)); do echo $x,tom$x,$x > $x.txt; done

建表

create table one100(id int,name string,age int)row format delimited fields terminated by ',';

load数据到表one100中

load data local inpath 'one00/*' into table one100;

配置:

set mapred.max.split.size;

默认256000000,每个map切片的最大值

set mapred.min.split.size.per.node;

默认1,每个节点切片的最小值

set mapred.min.split.size.per.rack;

每个机架切片的最小值

set hive.input.format;

默认org.apache.hadoop.hive.ql.io.CombineHiveInputFormat,hive输入格式

注意:第一个配置决定最终切片大小,间接决定mapper数,测试时,当以非本地模式运行时,才能看出实际有多少个map数

2、hadoop通过CombineTextinputFormat解决小文件问题

//设置组合文件输入格式,放置大量小文件。
job.setInputFormatClass(CombineTextInputFormat.class);
CombineTextInputFormat.setMaxInputSplitSize(job , 200);  //聚合文本输入个数的最大切片大小,单位字节

  hadoop中默认是 TextInputFormat

渐变 --> 突变
原文地址:https://www.cnblogs.com/lybpy/p/9710643.html