Hive1.2升级到Hive2.3的方法以及相关报错整理

实验环境

Ubuntu16.04;
Hive1.2.1(旧);
Hive2.3.1(新);

实际操作

按照之前安装hive1.2的方法,将相关配置文件复制过来,不在赘述。
需要具体步骤的,可以在文章末尾的公众号上回复[hive安装]获得完整版的安装文件以及hive教程。

将hive2.3重新安装一遍就完事了吗?当然不是。
我们发现,安装完启动 hive 命令后,出现如下报错:

FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

根据此报错查找,网上所罗列的教程都是进入到 $HIVE_HOME/scripts/metastore/upgrade/mysql目录下启动 mysql 进行升级。

此类解决方案参考文档:

  1. 升级Hive,从1.2.2升级到2.3.6
  2. hive 1.2.1 升级到hive2.3.6

若通过上述 1 2可以解决报错是最好的,如若不然,请看下面终极方案。

终极方案–肯定成功

  1. 命令行执行hive --service metastore判断元数据是否匹配,笔者出现如下报错。
Exception in thread "main" MetaException(message:Hive Schema version 2.3.0 does not match metastore's schema version 1.2.0 Metastore is not upgraded or corrupt)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.(RetryingHMSHandler.java:83)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:92)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6883)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6878)
  1. 进入$HIVE_HOME/scripts/metastore/upgrade/mysql/目录下,手动创建表格,及metastore.
cd $HIVE_HOME/scripts/metastore/upgrade/mysql/ 

< Login into MySQL > 

mysql> drop database IF EXISTS <metastore db name>; 
mysql> create database <metastore db name>; 
mysql> use <metastore db name>; 
mysql> source hive-schema-2.x.x.mysql.sql; 
  1. 再次执行 hive --service metastore
    此时,是不是很酷呢?

**注意:**最后的方法会使得老版本里的元数据丢失。
参考文档–stackoverflow

谈风月之余谈技术
Hive1.2升级到Hive2.3的方法以及相关报错整理_第1张图片

你可能感兴趣的:(大数据,程序人生)