本系列是本人对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之后,需要使用重新定义的列名进行排序。

  1. order by : 全排序!
  2. sort by : 部分排序! 需要先设置reducetask个数
    set mapreduce.job.reduces=3
  3. distribute by : 分区,分区需要和sort by结合使用!
    设置reducetask个数和数据的分区数一直!
  4. cluster by : 当分区字段和排序字段一致时,可以简写!不能指定排序方式!

4.常用函数

函数分类

  1. UDF : 一进一出,传入单个参数,返回一个结果!
  2. UDAF : 聚集函数,多进一出
  3. 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基础语法与常用函数相关推荐

  1. 大数据HiveSQL学习笔记三-查询基础语法以及常用函数

    大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...

  2. java冰法_Java基础学习笔记二 Java基础语法

    注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /*这是 * 一段注释, * 它跨越了多个行*/ public void ...

  3. 前端学习笔记之CSS3基础语法与盒模型(二)

    前端学习笔记之 CSS3基础语法与盒模型 CSS3简介 CSS(cascading style sheet,层叠式样式表)是用来给HTML标签添加样式的语言 CSS3是CSS的最新版本,增加了大量的样 ...

  4. 第一次网页前端培训笔记(Html基础语法和常用标签)

    一.什么是HTML HTML 是用来描述网页的一种语言.HTML 是一种在 Web 上使用的通用标记语言.HTML 允许你格式化文本,添加图片,创建链接.输入表单.框架和表格等等,并可将之存为文本文件 ...

  5. JS学习笔记二——JavaScript 基础知识

    JavaScript 基础知识 一.JavaScript 变量 二.JavaScript 的输出 三.JavaScript 运算符 四.结语 一.JavaScript 变量 变量是指在程序运行过程中, ...

  6. python基础论文_北大博士Python学习笔记,Python基础语法总结,一篇文章带你入门...

    image.png 网上现在Python学习资料有很多,但是很杂.很多初学Python的朋友就不知道该怎么去抉择,那些是自己当下所需要的. 刚好朋友是北大的博士,在IT行业也工作八年了.就把他学习Py ...

  7. 前端学习笔记之1 基础语法及标签

    引言 : 博主目前是一名iOS开发者, 所会的语言有Objective-C 和 Swift, 目前正在学习前端, 增强一下技术能力, 等学会点皮毛之后打算接触一下React Native; 这篇文章只 ...

  8. 【学习笔记】JS基础语法一小时通

    内容整理自<从0到1Javascript快速上手>上半部分-基础语法篇

  9. 学习笔记 之 JQuery 基础语法

    jQuery 库 - 特性 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaSc ...

最新文章

  1. Android源代码下载与编译 - 2019
  2. 关于MySQL内核,一定要知道的!
  3. VC常见数据类型转换详解
  4. 根据id/类名/元素名称查找元素
  5. 什么叫做类数组对象?
  6. H3C SecPath防火墙GRE+IPSEC+OSPF典型配置举例
  7. 详解ASP.NET页面的aspx扩展
  8. 一日一学:返回排序好的列表的索引顺序
  9. 计算机信息专业又分为哪三种,计算机类型大致分为哪三类
  10. Varnish 缓存
  11. 前端开发面试题收集 JS
  12. java并发编程实战读书笔记 ExecutorCompletionService
  13. 破解无线网络密码(蹭网教程
  14. PS油画特效插件AKVIS Artwork for mac
  15. 电脑定时关机、取消定时关机、滑动关机
  16. request.setAttribute()的用法
  17. 40页PPT详解金融业智能反欺诈的应用
  18. HBuildX 打包说明(网站链接打包apk(app))
  19. 食物链(经典种类并查集问题)---详解
  20. Android开发-helloAndroid

热门文章

  1. 西北大学计算机学院王郭玲,西北大学关于表彰2010-2011学年度学生先进集体
  2. js--小结⑥---typeof
  3. C代码在SDK编辑中的使用————(一)
  4. 前端同时访问后端同一接口两次,但只有后面那次请求有返回数据
  5. Android中文API(142) —— Gravity
  6. python语法31[变量的作用域+global]
  7. Linuxqt制作文本编辑器_Python实操!速收藏!学习使用Python创建文本编辑器应用程序
  8. android开发框架_2019 年五大跨平台移动应用开发工具
  9. 2019-11-07 检查gcc交叉编译器预定义宏(ARM32/ARM64/X86-64)以及对浮点数的支持情况
  10. 树莓派7寸触屏,略贵