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

一、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'

你可能感兴趣的:(hive,sql,hadoop,hdfs,mapreduce)