由于Hive在0.7和0.81版本中,concat_ws函数不支持Array,但是还需要用到concat_ws对Array的支持,so,今天对Hive的版本进行了一下升级,Hive0.9版本以上的是支持的,目前最新的版本是0.12,索性直接升级到Hive0.12版本了。遇到的问题如下:
1. 元数据的改变
Hive升级是向下兼容的,即升级到Hive0.12版本,对之前的Hive0.81版本的元数据访问是没有问题的。
但是升级之后,在初始化阶段,会改变之前元数据的一些表结构,再用低版本的Hive client端访问元数据就会提示错误。
这个是在升级的时候一定要注意的,如果不确定的话,一定要找一个测试环境测试好后,再更新到线上。
2. Hadoop包的变更
升级到高版本后,一定要将$HADOOP_HOME/lib下的Hive相关的jar包,替换成新版本Hive的jar包,否则可以进入Hive的cli,但是执行任何命令都是失败的
3. 脚本中不要重新定义环境变量
之前在一个脚本中,重新定义了$HIVE_HOME,而且与理论上的$HIVE_HOME是不一样的,这样在终端上执行hive的时候,会将脚本中定义的$HIVE_HOME作为环境变量,直接传给$HIVE_HOME/bin/hive这个脚本,结果一直提示jar包找不到,这算是一个低级的错误,一定要小心,而且不容易发现。