Hadoop 为什么配置单元中的仅映射作业会产生单个输出文件

Hadoop 为什么配置单元中的仅映射作业会产生单个输出文件,hadoop,hive,mapreduce,Hadoop,Hive,Mapreduce,当我执行下面的查询时,我只得到一个文件作为输出,尽管我有8个映射器和0个还原器 create table table_2 as select * from table_1. 调用8个映射器,并且没有减速器阶段。 表2的位置中只有一个文件,不应该有8个文件,因为我们有8个映射器和0个还原器。来自Hive文档 create table table_2 as select * from table_1. hive.merge.mapfiles默认值:true 在仅地图作业结束时合并小文件 hive

当我执行下面的查询时,我只得到一个文件作为输出,尽管我有8个映射器和0个还原器

create table table_2 as select * from table_1.
调用8个映射器,并且没有减速器阶段。 表2的位置中只有一个文件,不应该有8个文件,因为我们有8个映射器和0个还原器。

来自Hive文档

create table table_2 as select * from table_1.
hive.merge.mapfiles

默认值:
true

在仅地图作业结束时合并小文件

hive.merge.tezfiles

默认值:
false

在Tez DAG末尾合并小文件

hive.merge.smallfiles.avgsize
默认值:
16000000

当作业的平均输出文件大小 小于此数字,
配置单元将启动一个额外的映射缩减作业 要将输出文件合并到更大的文件中

因此,如果(a)您的测试数据集非常小,并且(b)您不使用TEZ,而是使用普通的旧MapReduce,那么默认情况下,Hive将运行映射后步骤来合并(中间)结果

然而,除非强制将
hive.merge.mapredfiles
设置为
true
,否则在Reduce步骤后不会发生这种情况