在猪和蜂房中产生的Mappers数量

时间:2014-04-01 06:53:43

标签: hadoop mapreduce hive apache-pig

我在hive中有一个分区表,每个分区将有630个gzip压缩文件,每个文件的平均大小为100kb。如果我使用配置单元查询这些文件,它将生成正好630个映射器,即一个文件的一个映射器。
现在作为实验我尝试用猪和猪实际上组合文件并生成只有2个映射器和操作读取这些文件比蜂巢快得多。
为什么猪和蜂巢的执行风格有差异?在hive中,我们可以类似地组合小文件来生成较少的映射器吗?

1 个答案:

答案 0 :(得分:2)

您需要指定要使用CombineHiveInputFormat

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

您还应将最小分割尺寸设置为更高:

set mapred.min.split.size=100000000;

作为旁注,CombineHiveInputFormat是EMR上的默认Hive输入格式,正是出于这个原因(许多小文件),请参阅How Amazon EMR Hive Differs from Apache Hive

Pig执行组合,因为默认情况下处于启用状态,请参阅Combine Small Input Files

  

pig.splitCombination - 打开或关闭拆分文件(默认设置为“true”)。