大数据 Hive 类Sql语法,Hql Join语法详解

本文详细介绍了Hive的SQL语法,重点解析了Hive的Join操作,包括等连接、外连接、非等值连接以及Map端的Join操作。同时,讨论了如何避免笛卡尔积、优化查询及Full Outer Join的实现。
摘要由CSDN通过智能技术生成

一、HIVE SQL 语法

SELECT [ALL | DISTINCT] select_expr, select_expr, ...
  FROM tablename
  [WHERE where_condition] --where条件语句
  [GROUP BY col_list]  --group by 分组语句
  [ORDER BY col_list]  --order by 排序语句 
  [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ]
 [LIMIT number]

大家都知道hive底层跑的是mapreduce程序,在执行hql语句时,mapreduce会解析hql产生执行逻辑,生成结果。

 

MapReduce引擎执行计划

Map阶段:

1、执行from加载,进行表的查找与加载。

2、执行where过滤,进行条件过滤与筛选。

3、执行select查询,进行输出项的筛选。

4、执行group by分组,描述了分组后需要计算的函数。

5、map端文件合并,map端本地溢出写文件的合并操作,每个map最终形成一个临时文件。然后按列映射到对应的Reduce阶段:

Reduce阶段:

1、group by:对map端发送过来的数据进行分组并进行计算。

2、select:最后过滤列用于输出结果。

3、limit排序后进行结果输出到HDFS文件。

注意,以上顺序不是绝对的,会根据语句的不同,有所调整。

可以通过执行计划查看大概顺序

explain sql 语句
如:explain select * from tablename 即可查看执行计划

 

二、Hive Join

Hive只支持等连接、外连接。Hive不支持非相等的Join条件,不过我们可以通过其他方式实现,如left outer join,因为它很难在map/reduce job实现这样的条件。建表对Join操作进行试验,建表语句和数据如下:

//我们创建三个表用来测试
CREATE TABLE testA(
    id INT COMMENT 'id',
    name STRING COMMENT '姓名',
    age INT COMMENT '年龄'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值