HIve1.x升級到2.x,且保留元數據
-
下載源碼包或者編譯過的二進制包都無所謂(源碼的就自己編譯一下)。
-
先備份原來的hive
mv hive-1.2.1/ hive-1.2.1-back/
-
解壓新版的hive到相同的目錄並更名爲hive-1.2.1(原來hive的名稱,爲了不去修改環境變量什麼的,這樣方便點)
-
升級元數據,hive已經爲我們準備好了升級元數據的腳本了,我們只需要運行這些腳本就好,沒有直接跳的只能一步步來。
scripts/ └── metastore └── upgrade ├── mysql │ ├── upgrade-0.10.0-to-0.11.0.mysql.sql │ ├── upgrade-0.11.0-to-0.12.0.mysql.sql │ ├── upgrade-0.12.0-to-0.13.0.mysql.sql │ ├── upgrade-0.13.0-to-0.14.0.mysql.sql │ ├── upgrade-0.14.0-to-1.1.0.mysql.sql │ ├── upgrade-0.5.0-to-0.6.0.mysql.sql │ ├── upgrade-0.6.0-to-0.7.0.mysql.sql │ ├── upgrade-0.7.0-to-0.8.0.mysql.sql │ ├── upgrade-0.8.0-to-0.9.0.mysql.sql │ ├── upgrade-0.9.0-to-0.10.0.mysql.sql │ ├── upgrade-1.1.0-to-1.2.0.mysql.sql │ ├── upgrade-1.2.0-to-1.3.0.mysql.sql │ ├── upgrade-1.2.0-to-2.0.0.mysql.sql 將1.2.x的元數據升級到2.0.0 │ ├── upgrade-2.0.0-to-2.1.0.mysql.sql 將2.0.0的升級到2.1.0 │ ├── upgrade-2.1.0-to-2.2.0.mysql.sql . │ ├── upgrade-2.2.0-to-2.3.0.mysql.sql . 沒用的信息我刪了,我是mysql管理的元數據,這裏面還有別的數據庫的升級腳本。
-
進入到這個目錄下 $HIVE_HOME/scripts/metastore/upgrade/mysql
-
登錄自己的mysql,進去你原來那個元數據庫 我的是use hive;
-
因爲我的是1.2.1—>2.3.6,分別運行了以下命令
source /opt/moudle/hive-1.2.1/scripts/metastore/upgrade/mysql/upgrade-1.2.0-to-2.0.0.mysql.sql; source /opt/moudle/hive-1.2.1/scripts/metastore/upgrade/mysql/upgrade-2.0.0-to-2.1.0.mysql.sql; source /opt/moudle/hive-1.2.1/scripts/metastore/upgrade/mysql/upgrade-2.1.0-to-2.2.0.mysql.sql; source /opt/moudle/hive-1.2.1/scripts/metastore/upgrade/mysql/uupgrade-2.2.0-to-2.3.0.mysql.sql; 如果不報錯就問題不大了,可能會有某些表找不到,沒事。
-
-
將原版本的hive的jdbc驅動和配置文件拷貝到新的hive裏就行了
-
啓動元數據服務 hive --service metastore &
-
啓動hive
-
查看是否元數據成功升級
-
查看hive是否可用
-
都沒事就成了~祝你好運