上次安装hive时遇到很多问题,最后遗留下一个没有解决的问题,最后通过询问得以解决在这记录下:方便遇到同样问题的人:
问题阐述
在安装完hive后,执行:
[root@localhost hive]# hive
Hive history file=/tmp/root/hive_job_log_root_201112071228_90457717.txt
hive>
创建表:
hive> CREATE TABLE test ( time string, ip string, url string);
OK
Time taken: 0.303 seconds
删除表报错:
NestedThrowables:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
解决方法:
一般是由于mysql的最大索引长度导致,看了一个人的文章颇有感触下面给出链接:
http://blog.csdn.net/cindy9902/article/details/6215769
解决方法如下:
1、数据库的字符集除了system为utf8,其他最好为latin1,否则可能出现如上异常。
2、set global binlog_format='MIXED';READ-COMMITTED需要把bin-log以mixed方式来记录
改完上述两种方法后,我还是会出现以上问题,我把mysql的metastore_db里面的所有表删除,hadoop重启,然后重新启动hive之后就能够正常删除表了。
问题解决。