1. 程式人生 > >Hive差集運算詳解

Hive差集運算詳解

bold san family 圖片 什麽 mat 左連接 image sel

差集定義:一般地,設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常用的求差集方法,左(右)連接 left (outer) join

先看一下左連接之後表是什麽樣的

1 hive> select * from A a left
outer join B b on a.uid=b.uid and a.goods=b.goods; 2 1 2 1 2 3 1 3 NULL NULL 4 2 1 NULL NULL 5 2 3 2 3 6 3 1 NULL NULL 7 Time taken: 12.735 seconds, Fetched: 5 row(s)

現在只要取出B的uid和goods為null的行就可以了

1 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; 2 1 3 3 2 1 4 3 1 5 Time taken: 13.023 seconds, Fetched: 3 row(s)

部分引用:http://blog.csdn.net/dr_guo/article/details/51182626

Hive差集運算詳解