您现在的位置是:首页 >技术交流 >hive执行sql:stage-1 map = 0 reduce = 0网站首页技术交流

hive执行sql:stage-1 map = 0 reduce = 0

Alcaibur 2024-06-14 17:17:46
简介hive执行sql:stage-1 map = 0 reduce = 0

执行hive连表时,出现这种情况:

WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Query ID = root_20180824151434_b0b979fe-7a85-4ac6-b924-33dd40897a28
Total jobs = 3
Launching Job 1 out of 3
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_1535114415498_0379, Tracking URL = http://master:8088/proxy/application_1535114415498_0379/
Kill Command = /opt/hadoop-2.7.4/bin/hadoop job  -kill job_1535114415498_0379
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2023-04-24 15:14:57,985 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:15:58,823 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:16:59,579 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:18:00,262 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:19:00,912 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:20:01,566 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:21:02,214 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:22:02,841 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:23:03,480 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:24:04,120 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:25:04,711 Stage-1 map = 0%,  reduce = 0%
2023-04-24 15:26:05,313 Stage-1 map = 0%,  reduce = 0%

控制台一直输出 stage-1 map = 0 reduce = 0
一般有以下几种原因:

        一、连表语句有误,产生笛卡尔积

        二、Yarn资源不足,增加Yarn资源内存

        解决方式:
        修改yarn-site.xml中的yarn.nodemanager.resource.memory-mb值大小

<property>
      <name>yarn.nodemanager.resource.memory-mb</name>
      <value>4096</value>
</property>

        三、其他 

        当 Hive 执行 SQL 时,它会将 SQL 语句转换为 MapReduce 任务,并且在第一阶段 (Map 阶段) 只会执行 Map 任务,不会执行 Reduce 任务。如果 Map 阶段的输出没有被正确地合并,则可能会导致第一阶段的 Map 任务输出为 0。因此,如果 Hive 执行 SQL 时显示“stage-1 map = 0 reduce = 0”,则表示第一阶段的 Map 任务没有产生任何输出,可能是因为输出被错误地合并或丢失了。

要解决这个问题,可以尝试以下方法:

  1. 检查 Hive 查询是否使用了正确的排序顺序,以确保 Map 阶段可以正确地合并输出。

  2. 检查 Hive 查询是否使用了正确的分组或过滤条件,以确保 Map 阶段可以正确地处理数据并产生输出。

  3. 检查 Hive 查询是否使用了正确的 MapReduce 框架,例如是否使用了正确的 MapReduce 版本或自定义的 MapReduce 函数。

  4. 检查 Hive 查询是否使用了正确的数据类型,以确保 Map 阶段可以正确地处理数据并产生输出。

  5. 检查 Hive 查询是否使用了正确的连接类型,以确保 Map 阶段可以正确地连接数据并产生输出。

  6. 如果以上方法都无法解决问题,则可以尝试升级 Hive 版本或使用不同的 MapReduce 框架。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。