Hadoop入门——Hive数据关联操作

目录

select语句

1. where子句

2. all、distinct子句

3. limit子句

4. 公共表达式(CTE)

5. 嵌套查询

6. 列匹配正则表达式

7. 虚拟列

关联查询(join语句)

1. 内连接(inner join)

2. 外连接(outer join)

3. 交叉连接(cross join)

联合查询(union语句)


select语句

1. where子句

where条件必须是布尔表达式,用于过滤结果集,属于精准过滤。

select * from table where city='重庆'
2. all、distinct子句

两个子句都表示是否返回重复行,默认是all。

all返回所有匹配的行
distinct

指出在结果集中重复出现的行

3. limit子句

limit子句用于限制select1语句返回的行数。

select p_id,p_name from products limit 5;
4. 公共表达式(CTE)

公共表达式可以表示一个临时的结果集(表),该表通过一个简单的查询指定,只要在CTE语句范围内均可共享该临时表。

临时表是不可被修改的、虚拟的。

with t1 as (select ...) select * from t1;
5. 嵌套查询

嵌套查询也称子查询,通常用于from子句后。

select * from (select ...) [as] name

嵌套查询注意事项:

(1)必须给定名称,因为from子句中的每个表必须有表名。

(2)子查询中的列必须有唯一名称,并且在外部查询中可以引用。

(3)可以进行union和join操作。

(4)Hive支持任意级别的子查询。

(5)“as”关键字在Hive0.13版本后才被支持。

6. 列匹配正则表达式
set hive.support.quoted.identifiers=none;
select `regex_expr` from table;

列匹配正则表达式注意事项:

(1)正则表达式必须用一对反引号“`”引住。

(2)设置“hive.support.quoted.identifiers”为“none”,使Hive将反引号解释为正则表达式。

7. 虚拟列

虚拟列是并未在表中真正存在的列,但对于数据进行相关验证时非常有用。于此同时,它只有查看权限,不能被修改。

input__file__name任务运行时的输入文件名,该行数据包含于哪个文件中(“__”为两根下划线)
block__offset__inside__file包含文件中的块内偏移量
select c_id,input__file__name,block__offset__inside__file
from customers limit 5;

关联查询(join语句)

关联查询是指对多表进行联合查询,主要通过join语句将两个或多个表中的行组合在一起进行查询。HQL JOIN类似于SQL JOIN,但仅支持等值连接,具体包括内连接(inner join),外连接(outer join),交叉连接(cross join)。关联查询详细操作

1. 内连接(inner join)
select * from 
table join table_item on table.t_id=table_item.ti_id
limit 10;
2. 外连接(outer join)

一下外连接方式中没连接的部分均用null替代。

(1)左外连接(左表全)

select A left join B

(2)右外连接(右表全)

select A right join B

(3)全连接(全显示)

select A full join B

(4)左半连接:舍弃掉右表中的数据,仅返回左表中剩余的数据。

select A left semi join B
3. 交叉连接(cross join)

交叉连接又称笛卡尔乘积,相当于两个表相乘。

select A cross join B

假设A表数据有4条,B表数据有7条,则总数据有4×7=28条。

联合查询(union语句)

union语句用于合并两个或多个select1语句的结果集。

联合查询注意事项:

(1)每个子集都必须有相同的列名和类型。

(2)应在获得整个union结果之后进行排序、分组、limit等操作。

(3)1.2版本前的Hive只支持union all,重复的行不会被删除。

最后,本篇文章是基于我所学所知进行的知识总结,如有误论,虚心接受指正。参考文献是《Hadoop数据仓库实战》,感兴趣的小伙伴可以对其进行深入阅读。

  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值