1. Hive高级操作
1.1 SELECT语句
Hive SELECT 语句用于对表的查询,即按照规定的语法规则从表中选取数据,并将查询结果保存在结果表中。
where子句:
where条件必须是布尔表达式,用于过滤结果集。
ALL,DISTIVCT子句:
ALL与DISTINCT选项表示是否返回重复行,默认是ALL,即返回匹配的行。大多数情况下使用DISTINCT子句指出在结果集重复出现的行。
LIMIT子句:
LIMIT子句用于限制SELECT语句返回的行数,其后的整数型参数表示共返回多少行。
公共表表达式:
公共表表达式可以表示一个临时的结果集(表),该表通过一个简单的查询的查询指定,只要在CET语句范围内均可共享该临时表。
嵌套查询:
嵌套查询也称为子查询,通常用于FROM子句后。
列匹配正则表达式:
Hive SELECT语句支持使用正则表达式指定列名称,凡是符合正则表达式规则的列名将作为结果集中的一列。
虚拟列:
虚拟列式并未在表中真正存在的列,但对于数据进行相关验证时非常有用。Hive的两个常用虚拟列介绍如下:
INPUT__FILE__NAME:包含Mapper任务运行时输入文件名,也就是该行数据包含于哪个文件中。
BLOCK__OFFSET__INSIDE__FILE:包含文件中的块内偏移量。
2. 关联查询
关联查询是指对多表进行联合查询,主要通过JOIN语句将两个或多个表中的行组合在一起进行查询。HQL JOIN类似于SQL JOIN,但其仅支持等值连接,具体包括内连接(INNER JOIN)、外连接(OUTER JOIN)与交叉连接(CROSS JOIN)。
2.1 内连接
内连接用于按连接条件组合两个表中的纪录,返回两个表的交集。
2.2 外连接
(1)左外连接
左外连接简称左连接。由内连接可以看出,结果集中的记录是在连接的两个表中都存在的记录。左连接的区别是左表的记录全部被选择,而右表只选择符合连接条件的记录,最后将无法与左表中记录进行对应的右表记录显示为NULL。
(2)右外连接
右外连接简称右连接。与左连接相反,右连接将右表的记录全部选择,而将左表中没有符合连接条件的记录显示为NULL。
(3)全外连接
全外连接结合了左连接和右连接的结果,即:对左表而言,右表中不符合连接好的记录显示为NULL:对右表而言,左表中不符合连接条件的记录显示为NuLL。
2.3 交叉连接
交叉连接又称笛卡尔乘积,相当于两个表相乘。比如表A交叉连接表B,则表A中的每一条记录都与表 B中的每一条记录连接。