hiveQL例子

来源:互联网 发布:淘宝店铺能过户吗 编辑:程序博客网 时间:2024/03/29 01:11

【sql在三年前学过,现在差不多都忘了,学习hive顺便复习下sql语句】

创建2个表stu(id int,name string,grade int,tid int),teacher(tid int,name string),并分别load data。

1、创建一个view(学生的名字,对应的教师名字)【涉及到连接】

create view stu_teacher as select stu.name as stuname,teacher.name as tea_name from stu join teacher on(stu.tid=teacher.tid);

2、连接操作(left semi join类似于关系数据库中的in,其余的类似于关系数据库中的子查询)

左连接:获取学生以及学生对应的老师的信息(当学生老师不存在时显示null)

select stu.id,stu.*,teacher.* from stu right outer join teacher on (stu.tid=teacher.tid);

全连接:获取学生以及学生对应的老师的信息(当学生老师不存在时显示null,当老师的学生不存在时也显示null)

select stu.id,stu.*,teacher.* from stu full outer join teacher on (stu.tid=teacher.tid);

左半连接:获取有学生的老师的信息

select teacher.* from teacher left semi join stu on (stu.tid=teacher.tid);

当一个表足够小时,这时可以将这张表加载进内存,再进行连接(MAP join),其中红色的表示要将这张表加入内存进行map join

select /*+ MAPJOIN(teacher)*/ stu.*,teacher.* from stu join teacher on (stu.tid=teacher.tid);