Hive升级,
场景:将hive0.13 升级到hive1.2.2
在下载的hive1.2.2的安装包中没有从0.13直接升级到1.2.2,而需要从0.13升级到0.14,之后再由0.14升到1.1,最终升到1.2
在$HIVE_HOME/scripts/metastore/upgrade 下有对应的元数据存放的数据库,如,MySQL,PostgreSQL;原来的是MySQL类型,进入到MySQL目录下,这里有相关的升级SQL。
个人看法:1.007-HIVE-78.mysql.sql 这种脚本是对表做修改,用来匹配升级之后的版本,有些SQL没有必要执行;
2.hive-schema-1.2.0.mysql.sql 这种脚本是用来创建对应版本hive的元数据,用来做升级后的表结构的参照;
3.upgrade-1.1.0-to-1.2.0.mysql.sql 这种脚本是用来升级的脚本;
4.READEME 这种文件,未必是“鸡肋”,但是在没有什么参考资料的时候,也还是有一定的帮助,还是值得一看。
操作:1. 关闭hive的的服务,例如metastore,hiveserver。
2. 备份原数据库的数据 :
mysqldump -uuser -ppasswd -Pport --databases hivedb >hivedb_bak.sql
3. 创建元数据的metastore的表结构,只需要表结构即可:
mysqldump --skip-add-drop-table --no-data hive3 >hive-0.13-nodata.sql
4. 将3中创建的表结构,与对应hive版本表结构作比较,有些 差异可以接受,有些则需要自己修改
a).有一些表会在需要的时候创建出来,这种表可以不创建
b).NUCLEUS_TABLES,SEQUENCE_TABLE等由DataNucleus,ORM管理的,会自动创建
c).注意一些表的创建的外键发生错位如,SDS;
d).一些列名会发生更改
5. 升级过程,按照升级的脚本进行升级,在MySQL的界面执行下面命令,一直跳转到目标版本
source upgrade-0.13.0-to-0.14.0.mysql.sql
6. 重启服务验证