如何在Hive中的2个表之间查找重复记录

时间:2019-04-30 13:29:00

标签: sql hive

我正在研究一个具有以下阶段的管道,

  1. 根据表B的值a,b,c(字符串类型)从表A查找新记录
  2. 根据表B中的值a,b从新记录表C中查找重复记录。
  3. 从表C中删除重复的记录。

我尝试了以下方法,

  1. 使用连接键a,b,c和基于派生列d(IS NULL)的过滤数据在A和B之间执行左连接。在这里,我得到约60,000条记录。
  2. 使用键a,b在C和B之间执行内部联接。在这里,我得到大约40,000条记录。可以说是表D。
  3. 在a和b上的D和C之间执行左连接,并使用c.a IS NULL过滤数据。我期望的数量是20,000,但是我得到大约55,000条记录。我正在尝试在pyspark中复制df1.subtract(df2)函数。

查询1:

select A.a, A.b, A.c from A 
LEFT JOIN B
ON (A.a= B.a AND A.b = B.b AND A.c = B.c) 
where B.d IS NULL

Query2:

select C.a, C.b, C.c from C
JOIN B
ON (C.a = B.b AND C.b = B.b)

Query3:

select COUNT(*) from C 
where not exists(select D.a,D.b.D.c where D.a=C.a AND D.b=C.b AND D.c=C.c);

只需尝试找出逻辑不正确的地方。

感谢帮助:)

0 个答案:

没有答案