hive执行计划解析

2023-11-03

1.hive执行流程的重要性

  • 1)当sql任务非常慢时,就需要分析它的执行流程
  • 2)常见的面试中,问对hive的理解?回答只是写sql,这个是很片面的。要从表面的sql,在脑海中映射出MR流程,在哪儿进行map,combiner,shuffle,reduce

2.解析sql执行计划流程

2.1 大数据两类sql框架
  • 单表分析:select a,聚合函数 from XXX group by b
  • 多表join分析:select a.,b. from a join b on a.id=b.id

这两种sql框架,概括了所有的大数据sql,几乎不可能有第三种写法,区别可能是业务复杂,写的复杂点儿而已。

2.2 解析sql执行计划流程详解

1

  • 1)parser:将sql解析为AST(抽象语法树),会进行语法校验,AST本质* * 还是字符串
  • 2)Analyzer:语法分析,生成QB(query block)
  • 3)Logicl Plan:逻辑执行计划解析,生成一堆Opertator Tree
  • 4)Logicl Optimizer:进行逻辑执行计划优化,生成一堆Opertator Tree
  • 5)Phsical plan:物理执行计划解析,生成 tasktree
  • 6)Phsical Optimizer:进行物理执行计划优化,生成 t优化后tasktree,该任务即是在集群上执行的作业 任务

六步将普通的sql映射成了作业任务。重点是 逻辑执行计划优化和物理执行计划优化

3.sql执行计划映射MR流程

3.1过滤类查询sql
  • select a.id,a,city, a.cate form access a where a.day=’20190414’ and a.cate= ‘奔驰’
    2
    整个job是没有reduce的,类似etl作业。其中map数是由文件分片数决定。分区条件直接在数据读取时过滤
3.2分组聚合类查询sql
  • select city, count(1) form access a where a.day=’20190414’ and a.cate= ‘奔驰’ group by city
    3
    和WC的流程没有本质区别,如上图combiner是本地局部的redece,好处是减少shuffle的数据量,但不是任何场景都会发生combiner,如求平均数。
3.3join类查询sql

待补充

4. 执行计划优化

待补充

扩展1:reducebykey和groupbykey的区别,前者会发生combiner 局部聚合,而后者不会,前者获得的是相同key对应的一个元素,后者是获取元素集合。reducebykey更加适合大数据,少用groupbykey(全数据shuffle)

扩展2:map task数是由数据文件分片数决定的分片数即是map任务数,程序员只能给个期望值

扩展3:reduce task数是由输入reduce的数据的分区(partitions)数决定的即分区数为map任务数,默认是1,程序员可直接设置reduce个数来改变reduce task数,reduce task数决定来 生成的文件数。

扩展4: MR数据shuffle确定数据发往哪一个reduce分区的规则是:取key的hashcode值对分区数模。

扩展5:explain sql ;查看某sql语句的执行计划

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hive执行计划解析 的相关文章

随机推荐

  • 【PI控制】位置式PI的拉普拉斯变化和离散化(在开关电源的应用)

    0 导读 开关电源主要是利用MCU的PWM波控制MOS管导通与截止 以达到控制输出电压或则输出电流的作用 以下描述均建立在开关电源控制上 1 位置式PI 位置式PI控制式对于咱这种小白是一种比较友善和直观的控制算法 很形象的描述了对控制对象
  • C# 序列化原码分析

    mcs class referencesource mscorlib system runtime serialization formatterservices cs private static MemberInfo GetSerial
  • 华为OD机试真题【滑动窗口最大值】Java版本

    滑动窗口最大值 题目描述 有一个N个整数的数组 和一个长度为M的窗口 窗口从数组内的第一个数开始滑动直到窗口不能滑动为止 每次窗口滑动产生一个窗口和 窗口内所有数和和 求窗口滑动产生的所有窗口和的最大值 输入描述 第一行输入一个正整数N 表
  • C语言函数大全-- l 开头的 Linux 内核函数(链表管理函数)

    l 开头的 Linux 内核函数 链表管理函数 1 list add list add tail 1 1 函数说明 1 2 演示示例 2 list cut before list cut position 2 1 函数说明 2 2 演示示例
  • MCP

    文献名 Identification of candidate plasma protein biomarkers for cervical cancer using the multiplex proximity extension as
  • 半岛铁盒平板测评--真的很垃圾的平板-怎么修改CPU型号

    兼职 赚了点钱 双十一到了 于是想买个平板 看了老久了 大牌太贵 买不起 正在犹豫的时候发现了这个什么鸟半岛铁盒出来了 这个该死的淘宝 真是让人又恨又爱 然后选了半天 决定入坑这个 看着参数不错 1200的价格也差不多对得上这个参数 就动手
  • 权重计算方法一:层次分析法(AHP)

    目录 1 层次分析法原理介绍 2 层次分析法建模步骤 3 案例分析 3 1 题目简述 3 2 确定评价指标 建立层次关系 3 3 构造判断矩阵 3 3 1 标度定义 3 3 2 构造判断矩阵 3 4 一致性检验 3 5 层次总排序 4 代码
  • 兜兜转转,2020已过半

    兜兜转转间 这个开局有些艰难的2020就已经过半了 这些日子 你过得还好吗 不管是努力抵抗病痛 还是奋力工作生活 其实一直以来 我们都在路上 摸爬滚打 艰难前行 我们总是在追寻 在求索 为了所爱的人 而默默付出努力 却仍时时觉得对不起他们
  • Android中使用Notification实现应用更新显示下载进度

    公司项目马上要进入内测阶段了 检查的时候发现还差一个更新的功能没有做 IOS那边儿有AppStore Android可没有 虽然说各大应用市场也会推送吧 但是毕竟还要装个XX应用市场的软件不是 要是没装的话应用不就没法更新了么 考虑到这方面
  • 初学者C++面向对象程序设计概念全总结最全的概念总结

    1 对象和类概念 对象 任何一个对象都应该具备两个要素 属性 行为 在C 中每个对象都有数据 体现了 属性 和函数 用来对数据进行操作 以实现某些功能 两部分组成 类 具有共性的实体的抽象 类是对象的抽象 不占有内存 对象是类的特例 即类的
  • 深度学习算法研发工程师笔试题(百度2014校园招聘)

    一 简答题 1 深度神经网络目前有哪些成功的应用 简述原因 10分 2 列举不同进程共享数据的方式 至少三种 10分 3 对于N个样本 每个样本为D维向量 采用欧式距离使用KNN做类预测 10分 1 给出预测时间复杂度 2 当N很大时 有哪
  • -20dB谱宽是什么意思?

    20dB谱宽就是信号衰减到十分之一时的频谱带宽 dB的含义 1 dB基本上是一个比例数值 也就是一种倍数的表示单位 也就是测试数据与参考标准的相对差异表示 2 计算公式上 dB 10lg P1 P2 20 lg V1 V2 P代表功率 V代
  • 凌思微新建定时器任务

    凌思微蓝牙IC LE5010A加入自己的APP循环任务 include builtin timer h define UART EVENT PERIOD 1000 MIN 10MS UINT 1MS static void ls user
  • Go开发学习

    欢迎关注 全栈工程师修炼指南 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 花开堪折直须折 莫待无花空折枝 作者主页 https www weiyigeek top 博客 https b
  • 基于改进人工蜂群算法的 K 均值聚类算法(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章讲解 1 概述 复现论文 基于以上三点改进提出
  • VUE +Element 实现多个字段值拼接

    效果截图 VUE 核心功能代码片段 获取公共通知列表 getUsers let para page this page title this filters title this listLoading true NProgress sta
  • React 在 styled-components 中使用 TailwindCss

    方法1 推荐 编译 apply 编译 Styled Components 中的 apply 将 tailwind 编译为 普通css 支持 tailwind 和 windi Babel https github com JiangWeixi
  • RSA加密算法(公钥+私钥加密)

    公开密钥加密 公开密钥加密 public key cryptography 也成为非对称加密 是密码学的一种算法 他需要两个密钥 一个是公开密钥 另一个是私有密钥 一个用作加密的时候 另一个则用作解密 明文 需要加密的内容 成为明文 密文
  • CDN原理简介

    CDN原理简介 CDN的百度百科的解释为 CDN的全称是Content Delivery Network 即内容分发网络 其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节 使内容传输的更快 更稳定 通过在网络各处放置
  • hive执行计划解析

    文章目录 1 hive执行流程的重要性 2 解析sql执行计划流程 2 1 大数据两类sql框架 2 2 解析sql执行计划流程详解 3 sql执行计划映射MR流程 3 1过滤类查询sql 3 2分组聚合类查询sql 3 3join类查询s