【异常】Specified key was too long;max key length is 767 bytes、解决由于HDFS格式化造成Hive数据全部丢失的问题

hive中可能会出现一个非常常见的异常:
Specified key was too long;max key length is 767 bytes?
是mysql/hive字符集问题。需要改变hive元数据库的字符集:mysql>alert database ruozedata character set latin1 然后重启hive,重启mysql。

由于HDFS进行了格式化,造成Hive的数据全部丢失,所以连接不上Hive。所以解决办法是:
1)去mysql中删除Hive中创建的数据库(注意:没有default数据库)。
2)修改Hive的hive-site.xml中存储在mysql的元数据,改成另一个元数据库ruozedata1:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/ruozedata1?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</value>
</property>

3)在mysql中创建ruozedata1数据库。
4)启动Hive:hive

一般这个操作在生产上是不会有的,一般不会删除HDFS上的所有的数据。

原文地址:https://www.cnblogs.com/huomei/p/12103651.html