Hive-为什么没有启动MapReduce任务

当执行某些简单的Hive查询时,Hive可能会使用Fetch Task代替MapReduce,以提高效率。然而,这可能导致内存不足的问题。本文探讨了参数`hive.fetch.task.conversion`、`hive.fetch.task.aggr`和`hive.fetch.task.conversion.threshold`如何影响这一行为,以及如何通过调整这些参数来避免OutOfMemoryError错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive-为什么没有启动MapReduce任务

涉及到关键参数:

  • hive.fetch.task.conversion
  • hive.fetch.task.aggr
  • hive.fetch.task.conversion.threshold

问题的背景:
(1)查询sql
select * from dim_beeper.dim_beeper_trans_match_driver_bid where p_day=’2017-06-06’ and source_id = 1594007;
(2)dim_beeper_trans_match_driver_bid是按照p_day来进行的分区表
(3)dim_beeper_trans_match_driver_bid的存储格式为parquet
(4)dim_beeper_trans_match_driver_bid在p_day=2017-06-06分区下,包含两个文件,每个文件的大小如下:
这里写图片描述

(5)执行上面的sql会出现OutOfMemoryError错误

=====
在执行上面的sql时,由于是简单的select *, hive内部会进行优化,并不会启动MapReduce任务,而会只有一个Fetch Task 来在执行hive的客户端进行数据的读取和解析操作,此时 由于Hive客户端的内存设置限制,会出现上面提到的 OutO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值