[问与答] 如何查询 Hive 两个分区的 diff?

假设一个 Hive 有十列: primary_key, user_id, column1, column2, …, column8

每天会产出一个分区,假设今天和昨天产出的分区分别是 partion1 和 partion2

问:每个分区的数据按照 user_id 进行聚合( group by ), 如何找到 partion1 和 partion2 有 diff 的那些 user_id?

diff 的定义:聚合后的行数不同,或者任何其他 column 的数据有 diff


举个例子,这个 Hive 的数据,是用户的订单记录,包括 用户 ID 、用户名称、快递公司、快递单号等数据。那么,针对每个用户,今天的分区都可能有新的订单记录,或者用户名称等 column 发生了变化。

最终需要的 user_id 就是:

  1. partion1 新增了了订单记录
  2. partion1 中的其他 column 发生了变化(用户名称更改;针对同一条订单记录,partion2 没有快递单号,但是 partion1 有了)