为什么仅在hive中映射作业会导致单个输出文件

时间:2017-11-13 19:56:56

标签: hadoop hive mapreduce

当我执行以下查询时,虽然我有8个映射器和0个reducer,但我只获得一个文件作为输出。

create table table_2 as select * from table_1.

调用了8个映射器,没有减速器阶段。 table_2的位置只有一个文件,不应该有8个文件,因为我们有8个映射器和0个reducer。

1 个答案:

答案 0 :(得分:0)

来自Hive文档,Configuration Properties ...

  

hive.merge.mapfiles
默认值:true
  在仅限地图的作业结束时合并小文件。

     

hive.merge.tezfiles
  默认值:false
  合并Tez DAG末尾的小文件

     

hive.merge.smallfiles.avgsize
默认值:   16000000
当作业的平均输出文件大小时   小于这个数字,
Hive将开始额外的map-reduce工作   将输出文件合并为更大的文件......

因此,如果(a)您的测试数据集非常小且(b)您不使用TEZ而是使用普通的旧MapReduce,那么Hive将运行一个帖子-Map步骤只是为了合并(中间)结果,默认情况下。

除非你强制hive.merge.mapredfilestrue,否则在减少步骤后不会发生。