1.安装hive后无法启动,报错如下
[ERROR] Terminal initialization failed; falling back to unsupported java.lang.IncompatibleClassChangeError: Found class jline.
原因是hadoop目录下存在老版本jline:
/hadoop-2.6.5/share/hadoop/yarn/lib:
-rw-r--r-- 1 wkz wkz 87325 Mar 10 18:10 jline-0.9.94.jar
解决方法是:
将hive下的新版本jline的JAR包拷贝到hadoop下:
cp /hive/lib/jline-2.12.jar ./
/hadoop-2.6.5/share/hadoop/yarn/lib:
-rw-r--r-- 1 wkz wkz 87325 Mar 10 18:10 jline-0.9.94.jar
-rw-r--r-- 1 wkz wkz 213854 Mar 11 22:22 jline-2.12.jar
然后删除老旧的jline-0.9.94.jar包,或者改名,启动成功。
2.安装hive后,创建表出现这个错误(数据库编码问题)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:For direct MetaStore DB connections, we don't support retries at the client level.)
解决:进入mysql,来到hive的源数据库hive_13下,然后执行:
alter database hive_13 character set latin1;
修改字符编码。
3.创建表出现如下错误(表字段或表名与hive内部的关键字冲突了(e.g:order,user ……)等,有两种解决方案)
FAILED: ParseException line 6:0 Failed to recognize predicate 'order'. Failed rule: 'identifier' in column specification
解决:(1). 在关键字处加反引号 ` 可以解决,同时查询时也要加反引号。e.g:select * from `user` where age>20;
(2). 需要设置一下变量即可解决: set hive.support.sql11.reserved.keywords=false; 也可以将hive-site.xml配置文件中的此选项改为false,让它始终生效。 以上配置将忽略关键字冲突。
eg:在conf下的hive-site.xml配置文件中修改配置选项:
4.启动hive报错 (mysql中hive的权限不够,或者设置错误)
6.hive能创建表,能加载数据,但是无法查询,一查询就报错并退出hive:
错误如下:Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hdfs.client.HdfsAdmin.getKeyProvider()Lorg/apache/hadoop/crypto/key/KeyProvider;
解决办法:hadoop客户端版本不对(根据我的情况)
我的客户端版本:
hive为:hive1.1-cdh5.13
hadoop为:hadoop2.6.0-cdh5.5.4
集群cm为:cm-5.13
把hadoop客户端版本替换为:hadoop2.6.0-cdh5.13后解决问题。