首页 > 数据库 >Hive 面试题——HiveSQL 执行顺序

Hive 面试题——HiveSQL 执行顺序

时间:2023-02-15 05:00:08浏览次数:32  
标签:map 面试题 顺序 group .. HiveSQL Hive 执行 select

描述

今天刷到了一个面试题:hivesql 执行顺序,接下来就从一个带有 group by 的例子看看 hivesql 的执行顺序

执行顺序为

from ..on .. join .. where .. group by .. having .. select .. distinct .. order by .. limit

测试数据

desc movies;
id    int
title_name    varchar(25)
score    double
select * from movies;
1007    侠客行    80.66
1008    小李飞刀    97.66
1005    流星蝴蝶剑    86.31
1006    萍踪侠影    85.75
1009    绝代双骄    81
1010    碧血剑    82.9
1011    射雕英雄传    92.88
1012    武林外传    88.95
1001    笑傲镜湖    91.69
1002    倚天屠龙记    95.21
1003    神雕侠侣    96.32
1004    孔雀翎    79.29

执行SQL 

select id, title_name, min(score) min_score
from movies
group by id, title_name
having min_score >= 80
order by id;

结果

执行顺序:

from … where … select … group by … having … order by …

其实总结hive的执行顺序也是总结mapreduce的执行顺序:

MR程序的执行顺序:

map阶段:

 1.执行from加载,进行表的查找与加载

2.执行where过滤,进行条件过滤与筛选

3.执行select查询:进行输出项的筛选

4.执行group by分组:描述了分组后需要计算的函数

5.map端文件合并:map端本地溢出写文件的合并操作,每个map最终形成一个临时文件。 然后按列映射到对应的reduceReduce阶段:

Reduce阶段:

1.group by:对map端发送过来的数据进行分组并进行计算。

2.select:最后过滤列用于输出结果

3.limit排序后进行结果输出到HDFS文件

所以通过上面的例子我们可以看到,在进行selectt之后我们会形成一张表,在这张表当中做分组排序这些操作。

标签:map,面试题,顺序,group,..,HiveSQL,Hive,执行,select
From: https://www.cnblogs.com/wdh01/p/17112015.html

相关文章

  • ​​面试题 01.05. 一次编辑​
    字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。链接: ​​https:/......
  • #yyds干货盘点# LeetCode面试题:最长公共前缀
    1.简述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例1:输入:strs=["flower","flow","flight"]输出:"fl"示例2:输入:strs=["......
  • 集合面试题
    Collection:①List:  Vector(Stack),  ArrayList,  LinekdList ②Set:  HashSet(LinkedHashSet),  TreeSet③Queue:  PriorityQueue,  ArrayDeque......
  • 热点面试题: Array中有哪些非破坏性方法?
    前言极度投入,深度沉浸,边界清晰前端小菜鸡一枚,分享的文章纯属个人见解,若有不正确或可待讨论点可随意评论,与各位同学一起学习~欢迎关注​​『前端进阶圈』​​公众号,一起探......
  • java面试题(七)
    1.21说一说hashCode()和equals()的关系参考答案hashCode()用于获取哈希码(散列码),eauqls()用于比较两个对象是否相等,它们应遵守如下规定:如果两个对象相等,则它们必须有相同的......
  • 面试题,反射创建类实例的三种方式是什么
    1、获得Class:主要有三种方法:(1)Object-->getClass(2)任何数据类型(包括基本的数据类型)都有一个“静态”的class属性(3)通过class类的静态方法:forName(StringclassName)(最常用)publi......
  • 面试题 HashMap和HashTable有什么区别
    ......
  • 面试题如何实现一个IOC容器
     ......
  • 面试题 为什么用线程池?解释下线程池参数
     ......
  • 面试题 锁消除是什么
    锁消除是在编译器级别的事情。在即时编译器时,如果发现不可能被共享的对象,则可以消除这些对象的锁操作。也许你会觉得奇怪,既然有些对象不可能被多线程访问,那为什么要加锁呢?写......