当我执行以下查询时,虽然我有8个映射器和0个reducer,但我只获得一个文件作为输出。
create table table_2 as select * from table_1.
调用了8个映射器,没有减速器阶段。 table_2的位置只有一个文件,不应该有8个文件,因为我们有8个映射器和0个reducer。
答案 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.mapredfiles
到true
,否则在减少步骤后不会发生。