HiveQL学习笔记(二):Hive基础语法与常用函数
本系列是本人对Hive的学习进行一个整理,主要包括以下内容:
1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介
2.HiveQL学习笔记(二):Hive基础语法与常用函数
3.HiveQL学习笔记(三):Hive表连接
4.HiveQL学习笔记(四):Hive窗口函数
5.HiveQL学习笔记(五):Hive练习题
接下来对第二个内容进行介绍。
Hive是基于Hadoop的数据仓库
HiveQL与传统SQL对比:
基础语法
1.SELECT…A…FROM…B…WHERE…C…
这里放上SQL语法执行的先后顺序:
7:SELECT 查询列表
1:FROM 表
2:连接类型 JOIN 表2
3:ON 连接条件
4:WHERE 筛选条件
5:GROUP BY 分组
6:HAVING 分组后的筛选
8:ORDER BY 排序列表
9:LIMIT 偏移,条目数;
例子:
**注:**分区表必须用where限制分区字段。
2.GROUP BY
GROUP BY的作用:分类汇总
常用的聚合函数:
GROUP BY……HAVING
HAVING:对GROUP BY的对象进行筛选,仅返回符合HAVING的结果。
例子:
3.ORDER BY
ORDER BY的作用:按字段排序
例子:
注:
ORDER BY的执行顺序在SELECT之后,需要使用重新定义的列名进行排序。
- order by : 全排序!
- sort by : 部分排序! 需要先设置reducetask个数
set mapreduce.job.reduces=3 - distribute by : 分区,分区需要和sort by结合使用!
设置reducetask个数和数据的分区数一直! - cluster by : 当分区字段和排序字段一致时,可以简写!不能指定排序方式!
4.常用函数
函数分类:
- UDF : 一进一出,传入单个参数,返回一个结果!
- UDAF : 聚集函数,多进一出
- UDTF : 一(集合)进多出
1.时间函数
1.时间戳转化为日期:
from_unixtime()
例子:
2.计算日期间隔
datediff()
例子:
2.条件函数
1.case when
例子:
2.if
例子:
3.字符串函数
substr()
从1开始。
例子:
不同数据存储形式的提取方式。string和map。
#1.string
get_json_object()
#2.map
extra2[]
#利用[]直接提取value
4.聚合统计函数
即ORDER BY中介绍的函数。
注:不许嵌套avg(count(*))
5.其他函数
1.nvl
NVL:给值为NULL的数据赋值,它的格式是NVL( string1, replace_with)。
它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。
#如果员工的comm为NULL,则用-1代替
select nvl(comm,-1) from emp;
2.行转列
行转列: 一列多行变一列一行
相关函数:
CONCAT(string A/col, string B/col…):返回输入字符串连接后的结果,支持任意个输入字符串;
CONCAT_WS(separator, str1, str2,…):它是一个特殊形式的 CONCAT()。separator是分隔符可以是与剩余参数一样的字符串。如果分隔符是 NULL,返回值也将为 NULL。如果不是 NULL分隔符将被加到被连接的字符串之间;
COLLECT_SET(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。
selectt1.base,concat_ws('|', collect_set(t1.name)) name
from(selectname,concat(constellation, ",", blood_type) basefromperson_info) t1
group byt1.base;
3.列转行
列转行:一列一行变一列多行
相关函数:
- EXPLODE(col):将hive一列中复杂的array或者map结构拆分成多行。
- LATERAL VIEW
用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias
解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。
selectmovie,category_name
from movie_info lateral view explode(category) table_tmp as category_name;
4.coalesce
若expression_1中有NULL值,则用expression_2对应的非NULL值进行填充;
若expression_1和expression_2中都存在NULL值,则用后面的expression_3进行填充,依次递推。
5常见错误及处理方法
1.标点符号错误
2.没有对子查询的表进行重命名
3.使用错误的字段名
4.丢了逗号分隔符
HiveQL学习笔记(二):Hive基础语法与常用函数相关推荐
- 大数据HiveSQL学习笔记三-查询基础语法以及常用函数
大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...
- java冰法_Java基础学习笔记二 Java基础语法
注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /*这是 * 一段注释, * 它跨越了多个行*/ public void ...
- 前端学习笔记之CSS3基础语法与盒模型(二)
前端学习笔记之 CSS3基础语法与盒模型 CSS3简介 CSS(cascading style sheet,层叠式样式表)是用来给HTML标签添加样式的语言 CSS3是CSS的最新版本,增加了大量的样 ...
- 第一次网页前端培训笔记(Html基础语法和常用标签)
一.什么是HTML HTML 是用来描述网页的一种语言.HTML 是一种在 Web 上使用的通用标记语言.HTML 允许你格式化文本,添加图片,创建链接.输入表单.框架和表格等等,并可将之存为文本文件 ...
- JS学习笔记二——JavaScript 基础知识
JavaScript 基础知识 一.JavaScript 变量 二.JavaScript 的输出 三.JavaScript 运算符 四.结语 一.JavaScript 变量 变量是指在程序运行过程中, ...
- python基础论文_北大博士Python学习笔记,Python基础语法总结,一篇文章带你入门...
image.png 网上现在Python学习资料有很多,但是很杂.很多初学Python的朋友就不知道该怎么去抉择,那些是自己当下所需要的. 刚好朋友是北大的博士,在IT行业也工作八年了.就把他学习Py ...
- 前端学习笔记之1 基础语法及标签
引言 : 博主目前是一名iOS开发者, 所会的语言有Objective-C 和 Swift, 目前正在学习前端, 增强一下技术能力, 等学会点皮毛之后打算接触一下React Native; 这篇文章只 ...
- 【学习笔记】JS基础语法一小时通
内容整理自<从0到1Javascript快速上手>上半部分-基础语法篇
- 学习笔记 之 JQuery 基础语法
jQuery 库 - 特性 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaSc ...
最新文章
- Android源代码下载与编译 - 2019
- 关于MySQL内核,一定要知道的!
- VC常见数据类型转换详解
- 根据id/类名/元素名称查找元素
- 什么叫做类数组对象?
- H3C SecPath防火墙GRE+IPSEC+OSPF典型配置举例
- 详解ASP.NET页面的aspx扩展
- 一日一学:返回排序好的列表的索引顺序
- 计算机信息专业又分为哪三种,计算机类型大致分为哪三类
- Varnish 缓存
- 前端开发面试题收集 JS
- java并发编程实战读书笔记 ExecutorCompletionService
- 破解无线网络密码(蹭网教程
- PS油画特效插件AKVIS Artwork for mac
- 电脑定时关机、取消定时关机、滑动关机
- request.setAttribute()的用法
- 40页PPT详解金融业智能反欺诈的应用
- HBuildX 打包说明(网站链接打包apk(app))
- 食物链(经典种类并查集问题)---详解
- Android开发-helloAndroid
热门文章
- 西北大学计算机学院王郭玲,西北大学关于表彰2010-2011学年度学生先进集体
- js--小结⑥---typeof
- C代码在SDK编辑中的使用————(一)
- 前端同时访问后端同一接口两次,但只有后面那次请求有返回数据
- Android中文API(142) —— Gravity
- python语法31[变量的作用域+global]
- Linuxqt制作文本编辑器_Python实操!速收藏!学习使用Python创建文本编辑器应用程序
- android开发框架_2019 年五大跨平台移动应用开发工具
- 2019-11-07 检查gcc交叉编译器预定义宏(ARM32/ARM64/X86-64)以及对浮点数的支持情况
- 树莓派7寸触屏,略贵