Hive学习:Hive连接JOIN用例详解
1 准备数据:
1.1 t_1
01 张三
02 李四
03 王五
04 马六
05 小七
06 二狗
1.2 t_2
01 11
03 33
04 44
06 66
07 77
08 88
1.3 t_3
01 男
02 男
03 女
04 男
05 女
06 女
07 男
08 X
2 创建表:t_1,t_2,t_3
create table if not exists t_1(id string,name string)row format delimited fields terminated by '\t';
create table if not exists t_2(id string,score string)row format delimited fields terminated by '\t';
create table if not exists t_3(id string,sex string)row format delimited fields terminated by '\t';
3 加载数据
load data local inpath '/root/tmp/t_1' into table t_1;
load data local inpath '/root/tmp/t_2' into table t_2;
load data local inpath '/root/tmp/t_3' into table t_3;
4 笛卡尔积:Join
select * from t_1 join t_2;
等价于:
select * from t_1,t_2;

5 等值连接:Join ... on(查交集)
select * from t_1 t1 join t_2 t2 on t1.id=t2.id;

图解原理:

5 左连接: left join ... on ...
左连接是显示左边的表的所有数据,如果有右边表的数据与之对应,则显示;否则显示null
select * from t_1 t1 left join t_2 t2 on t1.id=t2.id;

图解原理:

6 右连接: right join ... on ...
与左连接类似,右连接是显示右边的表的所有数据,如果有左边表的数据与之对应,则显示;否则显示null
select * from t_1 t1 right join t_2 t2 on t1.id=t2.id;

图解原理:

7 全连接:full outer join ... on
相当于t_1和t_2的数据都显示,如果没有对应的数据,则显示Null.
select * from t_1 t1 full outer join t_2 t2 on t1.id=t2.id;

图解原理:

8 左半连接:semi join
semi join仅会显示t_1的数据,即左边表的数据。效率比左连接快,因为它会先拿到t_1的数据,然后在t_2中查找,只要查找到结果立马就返回t_1的数据。
select * from t_1 t1 left semi join t_2 t2 on t1.id=t2.id;

图解原理:

9 用单次MapReduce实现连接:
如果在连接中使用了公共键,Hive还支持通过一次MapReduce来连接多个表。
select t1.*,t3.sex,t2.score from t_1 t1 join t_3 t3 on t1.id=t3.id join t_2 t2 on t2.id=t1.id;

Hive学习:Hive连接JOIN用例详解的更多相关文章
- [Hadoop大数据]——Hive连接JOIN用例详解
SQL里面通常都会用Join来连接两个表,做复杂的关联查询.比如用户表和订单表,能通过join得到某个用户购买的产品:或者某个产品被购买的人群.... Hive也支持这样的操作,而且由于Hive底层运 ...
- ASP.NET MVC 5 学习教程:生成的代码详解
原文 ASP.NET MVC 5 学习教程:生成的代码详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...
- IP地址和子网划分学习笔记之《IP地址详解》
2018-05-03 18:47:37 在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. ...
- 零拷贝详解 Java NIO学习笔记四(零拷贝详解)
转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...
- SSH 连接慢的解决方案详解
SSH 连接慢的解决方案详解 http://www.codeceo.com/article/ssh-slow.html
- [译]Java Thread join示例与详解
Java Thread join示例与详解 Java Thread join方法用来暂停当前线程直到join操作上的线程结束.java中有三个重载的join方法: public final void ...
- 局域网内远程连接OPC配置方法详解
局域网内远程连接OPC配置方法详解 https://wenku.baidu.com/view/20fb8ea6d1d233d4b14e852458fb770bf78a3bcc.html OPC服务 ...
- OpenCV学习C++接口 Mat像素遍历详解
OpenCV学习C++接口 Mat像素遍历详解
- Java基础-DBCP连接池(BasicDataSource类)详解
Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...
随机推荐
- struts配置
创建struts2的应用,首先应如前面所示要搭建好环境.jar包的导入和web.xml配置这里不在写出来. 如上所示,struts2中是采用<package>元素来管理Action的,包 ...
- html--onreadystatechange属性
- 使用CSStickyHeaderFlowLayout实现头部固定的CollectionView
近期流行的一种界面效果,是瀑布流的header固定,也叫sticky header或者parallax.对于UITableView,能够比較方便地让table header固定,可是对于UIColle ...
- hdu 4717 The Moving Points(三分)
http://acm.hdu.edu.cn/showproblem.php?pid=4717 大致题意:给出每一个点的坐标以及每一个点移动的速度和方向. 问在那一时刻点集中最远的距离在全部时刻的最远距 ...
- Android Cursor浅析
1. 本文目的 Android ContentProvider提供了进程间数据交换的一种机制.而数据库的查询就是这样的机制的应用.那么app通过Uri查询数据库而得到的Cursor到底是个什么东西?为 ...
- android:QQ多种側滑菜单的实现
在这篇文章中写了 自己定义HorizontalScrollView实现qq側滑菜单 然而这个菜单效果仅仅是普通的側拉效果 我们还能够实现抽屉式側滑菜单 就像这样 第一种效果 另外一种效果 第三种效果 ...
- Android 中View的绘制机制源代码分析 二
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/46842891 本篇文章接着上篇文章的内容来继续讨论View的绘制机制,上篇文章中我们主要解说 ...
- android WebViewClient和WebChromeClient
一.Android之WebViewClient与WebChromeClient的区别 ANDROID应用开发的时候可能会用到WEBVIEW这个组件,使用过程中可能会接触到WEBVIEWCLIENT与W ...
- 一个操作oracle的c#类 含分页
有别于以前的一个OracleHelper,这个版各有所长,MARK下. using System; using System.Data; using System.Data.OracleClient; ...
- Java-MyBatis:MyBatis 中 in 的用法
ylbtech-Java-MyBatis-杂项:MyBatis 中 in 的用法 1.返回顶部 1. foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元 ...