【问题标题】:Why does a map only job in hive results in a single output file为什么配置单元中的仅映射作业会导致单个输出文件
【发布时间】:2017-11-13 19:56:55
【问题描述】:

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

create table table_2 as select * from table_1.

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

【问题讨论】:

    标签: hadoop hive mapreduce


    【解决方案1】:

    来自 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 步骤只是为了合并(中间)结果,默认情况下。

    而在 Reduce 步骤之后不会发生这种情况,除非您将 hive.merge.mapredfiles 强制为 true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-14
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多