Hive差集运算详解

更新时间:2023-06-19 07:39:55 阅读: 评论:0

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> lect * from A;
OK
孤独的诗词
1 2
1 3
2 1
2 3
3 1
Time taken: 0.3 conds, Fetched: 5 row(s)
我家是动物园作文hive> lect * from B;
OK
1 2
1 4
2 2
2 3
Time taken: 0.086 conds, Fetched: 4 row(s)
要取出A与B的差集(A-B)解放碑好吃街
1 3
2 1
带鸿的成语
3 1
Hive可不可以⽤not in?可以,但只能⽤于单个字段。lect * from A where (uid,goods) not in (lect uid,goods from B);这个oracle是⽀持的,但hive不⾏。
乡友hive> lect * from A  where uid not in (lect uid from B);
3 1
Time taken: 46.09 conds, Fetched: 1 row(s)
立志
Hive可不可以⽤not exists?显然也可以!
青年教师培养计划hive> lect * from A  where not exists (lect * from B where A.uid=B.uid ds);
1 3
2 1
3 1
Time taken: 12.989 conds, Fetched: 3 row(s)
醴陵陶瓷不过前两种貌似很费资源,在ODPS⾥都有限制,下⾯来介绍⼀下hive常⽤的求差集⽅法,左(右)连接 left outer join 先看⼀下左连接之后表是什么样的
hive> lect * from A a left outer join B b on a.uid=b.uid ds;
1 2 1 2
1 3 NULL NULL
2 1 NULL NULL
2 3 2 3
3 1 NULL NULL
Time taken: 12.735 conds, Fetched: 5 row(s)
现在只要取出B的uid和goods为null的⾏就可以了
hive> lect a.* from A a left outer join B b on a.uid=b.uid ds where b.uid is null ds is null;
1 3
2 1
3 1
Time taken: 13.023 conds, Fetched: 3 row(s)

本文发布于:2023-06-19 07:39:55,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/989398.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:集合   记作   青年教师   运算
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图