问题描述
项目中有一个作业是通过pig来利用hive表的数据来更新mongo表的数据,简而言之就是Hive to Mongo use MongoUpdateStorage. 这种方法的效率很低,在UAT环境里面测试时竟然卡住不动。
解决办法
因为mongo的更新类似于SCD1,所以可以用 “delete & insert”的方法来代替update操作。具体步骤就是:
- 用pig将hive表数据插入到临时表
- 将原表重名为old表
- 将临时表重命名为原表
- 后台模式为“新”原表建立索引
因为mongo重命名的动作很快,所以基本不会对下游应用产生影响。而后台模式建立索引也可以尽量减少其对服务器的影响。