hive的Specified key was too long; max key length is 767 bytes问题解决

本文解决在安装Hive后遇到的删除表时报错的问题,主要原因是MySQL最大索引长度限制导致。通过调整MySQL字符集和bin-log记录方式,以及删除metastore_db表后重启Hadoop和hive,最终成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次安装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.youkuaiyun.com/cindy9902/article/details/6215769

解决方法如下:

1、数据库的字符集除了system为utf8,其他最好为latin1,否则可能出现如上异常。

2、set global binlog_format='MIXED';READ-COMMITTED需要把bin-log以mixed方式来记录 

改完上述两种方法后,我还是会出现以上问题,我把mysql的metastore_db里面的所有表删除,hadoop重启,然后重新启动hive之后就能够正常删除表了。

问题解决。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值