我在单元格中有一个分区表,每个分区将有630个gzip压缩文件,每个文件的平均大小为100 of。如果我使用hive查询这些文件,它将准确地生成630个映射器,即一个文件的映射器。
现在,作为一个实验,我试着用猪和猪来读取这些文件,实际上合并了这些文件,只生成了两个映射器,操作比蜂箱快得多。
为什么猪和蜂箱的执行方式有区别?在蜂巢中,我们可以同样地组合小文件来生成更少的映射器吗?
发布于 2014-04-01 07:44:05
您需要指定要使用CombineHiveInputFormat
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;您还应该将最小拆分大小设置得更高:
set mapred.min.split.size=100000000;另外,由于这个原因(许多小文件),CombineHiveInputFormat是EMR上默认的Hive输入格式,参见Amazon与Apache Hive的区别。
Pig做组合,因为默认情况下是打开的,请参见合并小输入文件
pig.splitCombination-打开或关闭合并拆分文件(默认设置为“true”)。
https://stackoverflow.com/questions/22778801
复制相似问题