在使用hive构建数据仓库的时候,经常会遇到从mysql或者oracle数据导入到hive中。
一般情况下,每天导一次数据,有些数据需要更新操作,最典型的例子就是订单数据,比如:
订单创建时间 | 订单导入hive时间 | 订单更新时间 |
2015-07-01 12:09:11 | 2015-07-02 00:30:00 | 2015-07-02 20:07:12 |
这个例子就很明显,如果按照订单生成时间导数据的话,订单状态更新后的数据就无法同步到hive 的数据仓库。
因为hive 不支持update操作,那么如何合并订单历史和更新数据呢?
那就使用hive模拟update操作。
hortonworks有一篇文章:http://zh.hortonworks.com/blog/four-step-strategy-incremental-updates-hive/
这篇文章就是说如何使用hive现有的操作来达到update数据的效果。
按照这么文章的操作,也会遇到一些问题:
1、join容易产生多条记录
2、jion操作比较耗时
这里我们推荐一种更轻快的解决办法,使用rank函数
以下面代码为例: