首页 > 数据库 >hive sql运行时候reduce 只有2个问题解决

hive sql运行时候reduce 只有2个问题解决

时间:2023-08-21 15:46:30浏览次数:38  
标签:stats reducer reduce hive 负数 sql data size

我们在explan sql

时候发现 width 是负数,事实上原因

width是通过data Size / rowNum计算出来的,这两个参数都是在执行计划中根据每个operator通过stats计算出来的。对于select query来说,data size是根据column stats、尤其是non-null的数据计算出来的,这些non-null value按照如下公式计算: long nonNullCount = cs.getNumNulls() > 0 ? numRows - cs.getNumNulls() + 1 : numRows; 不过有时候总计的行数会比null value数量少,因此会导致负数的row count和负数的data size。由于这些数据都是预估的数值,因此的确有发生这种问题的可能。 根据公示Max(1, Min(hive.exec.reducers.max [1099], ReducerStage estimate/hive.exec.reducers.bytes.per.reducer)) x hive.tez.max.partition.factor ,data size会在optimizer估算reducer数量的时候用到,因此如果data size为负数,最后生成reducer数量为1。 然后hive.tez.max.partition.factor   默认值为2  ,导致  redcue 最终生成值为2.

解决方式是,不用hive 元数据的 column stats ,而是使用其他方式预估功能。参数为 set  hive.stats.fetch.column.stats=false; 既可解决reduce 一直为2的问题

标签:stats,reducer,reduce,hive,负数,sql,data,size
From: https://www.cnblogs.com/kxming/p/17646176.html

相关文章

  • MySQL日期加减
    一、MySQL为日期增加一个时间间隔:date_add()。1、示例:set@dt=now();selectdate_add(@dt,interval1day);-加1天selectdate_add(@dt,interval1hour);-加1小时selectdate_add(@dt,interval1minute);-加1分钟selectdate_add(@dt,interval1second);-......
  • mysql查询慢是为什么 怎么改善43.242.205.12
    MySQL查询速度慢是一个令人头痛的问题,它可能会导致应用程序性能下降,影响用户体验。为了解决这个问题,需要了解MySQL查询速度慢的原因,并采取相应的改善措施。一、MySQL查询速度慢的原因43.242.205.1查询语句不合理不合理的查询语句是导致MySQL查询速度慢的常见原因之一。例如,使用SEL......
  • mysql5.7小版本之间升级(单机上操作)
    环境:OS:Centos7当前版本:5.7.29升级后版本:5.7.39说明:该升级方式才在当前机器上安装一个新的mysql实例进行升级.1.查看当前的版本/home/middle/mysql57/bin/mysql-hlocalhost-uroot-P13306-pmysql>selectversion();+------------+|version() |+------------+|5.7.29......
  • 查询SQL SERVER数据库会话阻塞
    SELECT[session_id],[blocking_session_id]AS'正在阻塞其他会话的会话ID',DB_NAME([database_id])AS'数据库名称',[request_id],[cpu_time],[start_time]AS'开始时间',[status]AS'状态',[command]AS'命令',......
  • 高性能MySQL实战(一):表结构
    最近因需求改动新增了一些数据库表,但是在定义表结构时,具体列属性的选择有些不知其所以然,索引的添加也有遗漏和不规范的地方,所以我打算为创建一个高性能表的过程以实战的形式写一个专题,以此来学习和巩固这些知识。1.实战我使用的MySQL版本是5.7,建表DDL语句如下所示:根据需求......
  • linux下mysql安装
    查看mysql版本(root用户)#mysql-V官网下载rpm包(MySQLCommunityServer8.0.16)下载地址:https://dev.mysql.com/downloads/mysql/在线下载rpm安装包#cd/usr/local/src#wgethttps://dev.mysql.com/get/mysql80-community-r......
  • SQLmap新手使用(基本运行)
    打开SQLmap会提示“输入一个完整的URL路径”,将想渗透的URL完整输入即可开机自检,直接回车即可选择注入程度(正常、中、高);程度越高,意味着效果越强,同时动作也就越大,被检测的风险也就越高选择枚举的等级(默认、中、全部)选择完运行后会提示“运行中”,等待即可运行结束后,会......
  • Mysql 忘记密码后重置密码
    1.以管理员身份进入cmd命令行输入netstopmysql停止mysql服务2.进入mysql安装的bin目录cdbin目录地址 3.输入mysqld--console--skip-grant-tables--shared-memory 此窗口不动在另开一个管理员权限cmd4.进入mysql安装bin目录5.输入mysql-uroot-p回车,不用输入密......
  • mysql 关键字 保留字
     MySQL::MySQL8.0ReferenceManual::9.3KeywordsandReservedWordshttps://dev.mysql.com/doc/refman/8.0/en/keywords.html9.3 KeywordsandReservedWordsKeywordsarewordsthathavesignificanceinSQL.Certainkeywords,suchas SELECT, DELET......
  • Sqlite3:增删改查
    条件介绍1)已存在一个数据库AddressBook.db以及其中的一张表telephone2)telephone表格式:NameTEXTNOTNULLPhoneNumCHAR(11)NOTNULLBirthdayTEXTNationTEXTDEFAULT'China'insert目的:新增两行记录#include<stdio.h>#include<string.h>#include<......