我想从一个 Hive 表中找到重复的行,为此我获得了两种方法。
第一种方法是使用以下两个查询:
select count(*) from mytable; // this will give total row count
第二个查询如下,它将给出不同行的计数
select count(distinct primary_key1, primary_key2) from mytable;
使用这种方法,对于我的一个表,使用第一个查询得出的总行数是 3500,第二个查询给出的行数是 2700。所以它告诉我们 3500 - 2700 = 800
行是重复的。但是这个查询并没有告诉哪些行是重复的。
我查找重复项的第二种方法是:
select primary_key1, primary_key2, count(*)
from mytable
group by primary_key1, primary_key2
having count(*) > 1;
上面的查询应该列出重复的行以及特定行重复的次数。但是此查询显示零行,这意味着该表中没有重复的行。
所以我想知道:
- 如果我的第一种方法是正确的 - 如果是,那么我如何找到重复的行
- 为什么第二种方法不提供重复的行列表?
- 有没有其他方法可以找到重复项?
原文由 Shekhar 发布,翻译遵循 CC BY-SA 4.0 许可协议
Hive 不验证 主键和外键约束。
这意味着 Hive 允许在主键中重复。
要解决您的问题,您应该执行以下操作:
这样,您将获得重复行的列表。