08_Hive中的各种Join操作
1.关于hive中的各种join
Hive中有许多的Join操作,例如:LEFT、RIGHT和FULL OUTER JOIN,INNER JOIN,LEFT SEMI JOIN等;
1.1.准备两组数据:
a.txt b.txt 1,a 2,bb
2,b 3,cc
3,c 7,yy
4,d 9,pp
7,y
8,u
1.2.在Hive中建表:
create table a(id int,name string) row format delimited fields terminated by ',';
create table b(id int,name string) row format delimited fields terminated by ',';
1.3.在Hive表中导入数据:
load data local inpath '/root/a.txt' into table a;
load data local inpath '/root/b.txt' into table b;
1.4.inner join内连接:select * from a inner join b on a.id=b.id;
相当于是求交集
1.5.left join左连接:select * from a left join b on a.id=b.id;(左边的表的记录都打印出来)
1.6.right join右连接:select * from a right join b on a.id=b.id;(右边的表的记录都打印出来)
1.7.full outer join右连接:select * from a full outer join b on a.id=b.id;
两边的记录都会出来,如果没有的就填NULL
1.7.left semi outer join连接:select * from a left semi join b on a.id = b.id;
SEMI在Hive中用的很广泛,用于实现Exist IN 子查询的。LEFT SEMI JOIN相当于Inner Join中取一半
----LEFT SEMI JOIN :Hive 当前没有实现 IN/EXISTS 子查询,可以用 LEFT SEMI JOIN 重写子查询语句
例如:重写以下子查询为LEFT SEMI JOIN
SELECT a.key, a.value FROM a WHERE a.key exist in (SELECT b.key FROM B);
可以被重写为:SELECT a.key, a.value FROM a LEFT SEMI JOIN b on (a.key = b.key);
查询与“刘晨”在同一个系学习的学生:
hive> select s1.Sname from student s1 left semi join student s2 on s1.Sdept=s2.Sdept and s2.Sname='刘晨';
08_Hive中的各种Join操作的更多相关文章
- 轻量级ORM框架——第二篇:Dapper中的一些复杂操作和inner join应该注意的坑
上一篇博文中我们快速的介绍了dapper的一些基本CURD操作,也是我们manipulate db不可或缺的最小单元,这一篇我们介绍下相对复杂 一点的操作,源码分析暂时就不在这里介绍了. 一:t ...
- 在MongoDB中使用JOIN操作
SQL与NoSQL最大的不同之一就是不支持JOIN,在传统的数据库中,SQL JOIN子句允许你使用普通的字段,在两个或者是更多表中的组合表中的每行数据.例如,如果你有表books和publisher ...
- 重温sql语句中的join操作
1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,RIGHT,一个表或视图也可以可以和它自身做JOIN操 ...
- SQL点滴2—重温sql语句中的join操作
原文:SQL点滴2-重温sql语句中的join操作 1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,R ...
- hive中的子查询改join操作(转)
这些子查询在oracle和mysql等数据库中都能执行,但是在hive中却不支持,但是我们可以把这些查询语句改为join操作: -- 1.子查询 select * from A a where a.u ...
- 轻量级ORM框架:Dapper中的一些复杂操作和inner join应该注意的坑
上一篇博文中我们快速的介绍了dapper的一些基本CURD操作,也是我们manipulate db不可或缺的最小单元,这一篇我们介绍下相对复杂 一点的操作,源码分析暂时就不在这里介绍了. 一:tabl ...
- MySQL中使用INNER JOIN来实现Intersect并集操作
MySQL中使用INNER JOIN来实现Intersect并集操作 一.业务背景 我们有张表设计例如以下: CREATE TABLE `user_defined_value` ( `RESOURCE ...
- Mapreduce中的join操作
一.背景 MapReduce提供了表连接操作其中包括Map端join.Reduce端join还有半连接,现在我们要讨论的是Map端join,Map端join是指数据到达map处理函数之前进行合并的,效 ...
- JavaScript jQuery 中定义数组与操作及jquery数组操作
首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...
随机推荐
- echarts之title-textAlign
option: { title : { text: '各类数据采集总量TOP5', subtext: '', x:'center', y:'top', textAlign:'center' },}
- Android学习笔记之View
转载: 0.7562018.10.22 21:44:10字数 5,423阅读 189 导图 一.View事件体系 1.什么是 View 和 View的位置坐标 View是什么: View 是一种界 ...
- python遍历文件夹中所有文件夹和文件,os.walk
python中可以用os.walk来遍历某个文件夹中所有文件夹和文件. 例1: import os filePath = 'C:/Users/admin/Desktop/img' for dirpat ...
- idea快捷键整合-无鼠标操作idea
查找所有快捷键 Ctrl + Shift + A.输入action或操作的名字. 全屏模式 使用Alt+V快捷键,弹出View视图,然后选择Enter Full Screen. 进入这个模式后,我想看 ...
- 小技巧 Mongodb 动态查询 除去 _class 条件
最近在做通用模板标准示例项目,在使用 spring data jpa Mongodb 的时候,动态查询会代入 _class条件. 为什么这么做其实也很好理解,写入数据库的数据中是有这个字段的.接受 ...
- JS之ajax实现注册页,小文件传输
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- css消除已有的背景颜色
比如我们在第三方库的时候,样式会有你不喜欢的,就比如背景颜色.那么就要去除已有的背景颜色 background-color:transparent;
- vue 结构赋值
- [Agc030B]Tree Burning_贪心
Tree Burning 题目链接:https://atcoder.jp/contests/agc030/tasks/agc030_b 数据范围:略. 题解: 开始以为是左右左右这样,发现过不去样例. ...
- Docker 安装 PHP
安装 PHP 镜像 查找Docker Hub上的php镜像 docker search php 这里我们拉取官方的镜像,标签为5.6-fpm docker pull php:5.6-fpm Nginx ...