Hive 差集运算
差集定义:一般地,设A,B是两个集合,由所有属于A且不属于B的元素组成的集合,叫做集合A减集合B(或集合A与集合B之差)。
类似地,对于集合A,B,我们把集合{x/x∈A,且x¢B}叫做A与B的差集,记作A-B记作A-B(或A\B);
即A-B={x|x∈A,且x ¢B}(或A\B={x|x∈A,且x ¢B} B-A={x/x∈B且x¢A} 叫做B与A的差集。
比如说有这么两个表:
hive> select * from A;
OK
1 2
1 3
2 1
2 3
3 1
Time taken: 0.3 seconds, Fetched: 5 row(s)
hive> select * from B;
OK
1 2
1 4
2 2
2 3
Time taken: 0.086 seconds, Fetched: 4 row(s)
要取出A与B的差集(A-B):
1 3
2 1
3 1
Hive可不可以用not in?可以,但只能用于单个字段。select * from A where (uid,goods) not in (select uid,goods from B);这个oracle是支持的,但hive不行。
hive> select * from A where uid not in (select uid from B);
3 1
Time taken: 46.09 seconds, Fetched: 1 row(s)
Hive可不可以用not exists?显然也可以!
hive> select * from A where not exists (select * from B where A.uid=B.uid and A.goods=B.goods);
1 3
2 1
3 1
Time taken: 12.989 seconds, Fetched: 3 row(s)
不过前两种貌似很费资源,在ODPS里都有限制,下面来介绍一下hive常用的求差集方法,左(右)连接 left outer join
先看一下左连接之后表是什么样的
hive> select * from A a left outer join B b on a.uid=b.uid and a.goods=b.goods;
1 2 1 2
1 3 NULL NULL
2 1 NULL NULL
2 3 2 3
3 1 NULL NULL
Time taken: 12.735 seconds, Fetched: 5 row(s)
现在只要取出B的uid和goods为null的行就可以了
hive> select a.* from A a left outer join B b on a.uid=b.uid and a.goods=b.goods where b.uid is null and b.goods is null;
1 3
2 1
3 1
Time taken: 13.023 seconds, Fetched: 3 row(s)
转自:https://blog.csdn.net/Dr_Guo/article/details/51182626
Hive 差集运算的更多相关文章
- EXCEPT差集运算
EXCEPT差集运算在逻辑上先删除两个输入多集中的重复行,把多集变成集合,然后返回只在第一个集合中出现,在第二个集合中不出现的所有行.可以看下面示意图.
- spark 集合交集差集运算
intersect except是spark提供的集合差集运算, 但是要求参与运算的两个dataframe,有相同的data Schema. 如果我想从 集合1(attribute1, attribu ...
- List之Union(),Intersect(),Except() 即并集,交集,差集运算。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Hive的运算和函数大全
hive 常用运算 测试各种内置函数的快捷方法: 创建一个 dual 表 create table dual(id string); load 一个文件(只有一行内容:内容为一个空格)到 dual 表 ...
- SQLServer数据集合的交、并、差集运算
SQLServer2005通过intersect,union,except和三个关键字对应交.并.差三种集合运算. 他们的对应关系可以参考下面图示 相关测试实例如下: use tempdb go if ...
- SQLSERVER数据集合的交、并、差集运算(intersect,union,except)
SQLServer中通过intersect,union,except和三个关键字对应交.并.差三种集合运算. 他们的对应关系可以参考下面图示 测试示例: 构造A,B两个数据集 A:,,, B:,, W ...
- List对象集合根据组合属性进行差集运算
背景 当List是一个基本数据类型的集合的时候,进行集合运算还比较方便,但是有这么一些业务场景,比如某个用户权限变化的列表,或者取数据的变化结果,当时有时候用笨方法多循环两次也是可以的,只不过代码 ...
- 离散数学-集合的交并差集运算--STL-set类
代码其实很简单,我们只需要知道set类的使用方法就可以了,比如迭代器的定义( set<T>::iterator it=a.begin() ),和简单的insert函数插入,以及find函数 ...
- SQL中对于两个不同的表中的属性取差集except运算
SQL中对两个集合取差集运算,使用except关键字,语法格式如下: SELECT column_name(s) FROM table_name1 EXCEPT SELECT column_name( ...
随机推荐
- intellij idea 为JavaEE项目建立Servlet
建立Servlet的方法 顶部菜单栏 View > Tool Windows > Web. 然后互相web窗口 右键Web>new>Servlet 弹出窗口
- [Contest20180321]nonintersect
$\dfrac 2\pi$是个引人注目的数字,先来看看它到底是什么东西 假如有一条直线,它和题目所给的某条长度为$d$的线段夹角为$\theta$,那么线段在直线上的投影长度为$\left|d\cos ...
- 可见性-volatile
出处: http://blog.csdn.net/vking_wang/article/details/9982709
- React Conf 2017 干货总结 1: React + ES next = ♥
React Conf 2017在加利福尼亚州的圣克拉拉万豪酒店圆满落幕,这已经是Facebook举办的第三届React官方大会了.虽然不能参会,但是作为前端开发者,我们当然不能错过这个绝佳的学习契机. ...
- telnet协议的作用详解,以及telnet端口号介绍
转:http://www.ctowhy.com/382.html Telnet协议,工作在TCP/IP协议栈的“应用层”,telnet是一种使用命令行的远程终端管理的协议,可以远程连接到网络设备上,并 ...
- nhibernate change connection
http://stackoverflow.com/questions/4335827/changing-nhibernate-connectionstring http://stackoverflow ...
- 昨晚京东校招笔试,没考一道.net,全考java了
我在大四之前我都觉得跟着微软走是正确的,这条大腿很粗!但是现在我也开始不那么认为了,现在每天在网上找招聘信息,稍微大点的公司都是招java的,很少招.net的!别说什么你学的好不怕没人招之类的话,大公 ...
- JavaScript字符串api简单说明
1.可返回指定位置的字符 stringObject.charAt(index); 2.返回的是位于指定位置的字符的编码 stringObject.charCodeAt(index); 3.用于连接两个 ...
- 采用Apache作为WebLogic Server集群的负载均衡器
强烈建议不要使用WebLogic ClusterServlet作为Proxy进行生产环境的负载均衡, 那个是用来进行集群的功能测试的,Oracle的产品文挡也写得比较清楚. 如果采用软件的负载均衡,可 ...
- Shell--数据流重定向
数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方 标准 1.标准输入(stdin):代码为0,使用<或<< 2.标准输出(stdout):代码为1.,使用> ...