博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive进阶(二)
阅读量:4299 次
发布时间:2019-05-27

本文共 1662 字,大约阅读时间需要 5 分钟。

上次课复习:

1. hive的view非常简单,只是元数据层面,所以hdfs下根本找不到的。

view主要用于复杂逻辑的隐藏

2. 侧视图

行转列专置

3. select 用于查询后面可以跟where  limit等条件

多用Common Table Expression来代替子查询,思路清晰

4. join

内连接 左外连接 右外连接 全连接

in  not  in

exists

5.纵向合并union

union去重

union all不去重,速度快

6. hive数据加载和交换

load 相当于剪切,只能运行一次

insert into/overwrite  values  ( ,,)

insert into  as  select ....

还可以form 从一个公共表多次插入

7. order by比较慢  尽量提前过滤数据

SORT BY 单台机器上排序

DISTRIBUTE BY  对数据分组到不同机器上

8. GROUP BY  局限性在于select的列必须出现在GROUP BY后面

having  筛选聚合函数的条件

having和where的区别,有些类似。

——————————————————————————————————————————

新课:

1. GROUPING SETS

这东西其实非常简单,就是把几个group by语句合在一起写了。

(a,b)就是a和b同时,a就是只能select a ,所以b被我置为null。

还有()就是a,b都置为null。

 

2. CUBE/ROLLUP

CUBE就是所有group by后面列的组合

 

ROLLUP(向上聚合)

按层次表达出来,我只表达结构,

所以就是只有(a,b,c)和(a,b)和a和null了

 

1、2不做重点掌握

 

 

3.Window Functions(窗口函数)   重要

优势:相比GROUP BY没有对SELECT的列的限制。

主要讲排序、聚合和分析

 

 

窗口函数用法

Function()   OVER   

// OVER确定聚合函数范围

 

例子 

排序类:

其实这些非常简单,我按行来解释:

前2行不说了

ROW_NUMBER()最重要

3.  ROW_NUMBER()   OVER ()   AS row_num   //整体给出行号,不按列分区 不排序

4. RANK()   OVER (PARTITION BY dept_num ORDER BY salary)  AS rank   // 分部门对工资排名

5.DENSE_RANK() OVER  紧凑的排名,比如并列第一之后的人,还是第二名,而不是标为第三名。

6. PERCENT_RANK()  OVER    百分比排名  计算方法是 n-1/(total-1)

7. NTILE(2)   OVER 按照部门对工资排序  并分出2个桶

 

聚合类:

COUNT

SUM

AVG

MAX/MIN

 

Hive 2.1.0新功能:按照聚合函数排序

ORDER BY sum(b) 

例子:

 

 

分析类:

LEAD就是网上顶,前面的数据被顶掉2个。

LAG就是往后顶。括号里第三个属性都是表示如果没有这个值,默认填为NULL,你可以手动设置为0.

FIRST VALUE和LAST_VALUE 只有加了RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWNG

才会生效,筛选出第一个值和最后一个值。

 这些都不是重点,用着用着就会了,别放太多精力,知道是干嘛的就行,用到再说。

 

重点来了!

窗口函数:它分为ROW和RANGE两种

行类窗口

写法就是ROWS BETWEEN <start_expr>  AND <end_expr>

其中这两个参数可以选择这三种,分别代表 从最上面开始/到最下面结束、当前行开始、当前行前或后的N行开始。

 

例子:ROW Windows

结果:

 

Range Windows例子

跟row原理一样  只不过RANGE就是在那个基础上,比如说当前行减100到当前行。

 

 

 

转载地址:http://bkvws.baihongyu.com/

你可能感兴趣的文章
Centos6安装图形界面(hdp不需要,hdp直接从github上下载数据即可)
查看>>
CentOS7 中把yum源更换成163源
查看>>
关于yum Error: Cannot retrieve repository metadata (repomd.xml) for repository:xxxxxx.
查看>>
linux下载github中的文件
查看>>
HDP Sandbox里面git clone不了数据(HTTP request failed)【目前还没解决,所以hive的练习先暂时搁置了】
查看>>
动态分区最佳实践(一定要注意实践场景)
查看>>
HIVE—索引、分区和分桶的区别
查看>>
Hive进阶总结(听课总结)
查看>>
大数据领域两大最主流集群管理工具Ambari和Cloudera Manger
查看>>
Sqoop往Hive导入数据实战
查看>>
Mysql到HBase的迁移
查看>>
Sqoop import进阶
查看>>
Hive语句是如何转化成MapReduce任务的
查看>>
Hive创建table报错:Permission denied: user=lenovo, access=WRITE, inode="":suh:supergroup:rwxr-xr-x
查看>>
Hive执行job时return code 2排查
查看>>
hive常用函数及数据结构介绍
查看>>
Hive面试题干货(亲自跟着做了好几遍,会了的话对面试大有好处)
查看>>
力扣题解-230. 二叉搜索树中第K小的元素(递归方法,中序遍历解决)
查看>>
力扣题解-123. 买卖股票的最佳时机 III(动态规划)
查看>>
java中ThreadLocal类的使用
查看>>