当前位置:   article > 正文

Hive处理小文件_怎么hive 中map的读取文件大小

怎么hive 中map的读取文件大小

1、输入中小文件过多 
主要是通过参数调节
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat :设置Inputformat。
set mapred.max.split.size=256000000:用来设置每个Map最大的输入大小。
set mapred.min.split.size.per.node=100000000:用来设置每个map中从一个node读取的最小数据量。合并的时候,会优先把一个node下的数据合并到一个split里,这样比较容易保证数据节点和计算节点本地行。
set mapred.min.split.size.per.rack=100000000:用来设置每个map中从一个机架上读取的最小数据量。如果没法保证一个split中数据尽量在一个node上,会尽量保证数据在一个机架上。


2,输出小文件过多
2.1 只有map,没有reduce的场景
对于部分简单的sql查询,可能只有map阶段,没有reduce阶段。如下面的sql:insert overwrite table t1  elect  c1 from  t2 ;


方法1:还是用CombineInputformat,通过让一个map处理更多的数据量,一个map的结果会写到一个输出里。
方法2:参数调节。会单独起一个mapreduce任务完成小文件合并,会额外浪费一些集群资源。
set hive.merge.mapfiles = true  : 该参数默认为true,故无需设置
set hive.merge.size.per.task = 256000000 :设置每个task合并的size
set hive.merge.smallfiles.avgsize=16000000 :当map的平均输出大小小于该值时,才会启动第二轮的merge任务。


2.2  既有map,也有reduce场景
set hive.merge.mapredfiles = true :该参数默认为false,需要手动设置
set hive.merge.size.per.task = 256000000 
set hive.merge.smallfiles.avgsize=16000000 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/727995
推荐阅读
相关标签
  

闽ICP备14008679号