hive的limit失效问题

问题语句

select app_name,count(1) as cnt from 
(   
  select name,seq_id
   from tmp.data_20220418 
   group by name ,seq_id
) a group by app_name limit 10; 

当我在spark去运行这个语句时加不加limit 结果是一致的
但是当我用beeline去运行时, 加limit 结果只有一行错误数据, 不加limit 才能跑出正常结果
排查过程
把limit相关参数提取出来 ,提取的是相关默认参数

# hcat 可以避开权限检查
hcat -e "set -v " |grep limit 

可以得到下面这些默认配置,根据这些参数去对比

hive.limit.optimize.enable=false
hive.limit.optimize.fetch.max=50000
hive.limit.optimize.limit.file=10
hive.limit.pushdown.memory.usage=0.1
hive.limit.query.max.table.partition=-1
hive.limit.row.max.size=100000
hive.metastore.limit.partition.request=-1
mapreduce.job.running.map.limit=0
mapreduce.job.running.reduce.limit=0
mapreduce.reduce.shuffle.memory.limit.percent=0.25
mapreduce.task.userlog.limit.kb=0
yarn.app.attempt.diagnostics.limit.kc=64
yarn.app.mapreduce.am.container.log.limit.kb=0
yarn.app.mapreduce.shuffle.log.limit.kb=0

去官网找到对应参数描述: https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties

最终发现此参数被设置为0.1, 改成-1后恢复正常
set hive.limit.pushdown.memory.usage=0.1

参数默认值

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值