hive设置mysql元数据编码问题

   文章来自:

http://blog.csdn.net/lili72


Mysql默认安装,建表时出现如下异常。

FAILED: Error in metadata: javax.jdo.JDODataStoreException: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
at com.mysql.jdbc.Util.getInstance(Util.java:386) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2618) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568) 
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:842) 
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681) 
at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264) 
at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264) 
at org.datanucleus.store.rdbms.table.AbstractTable.executeDdlStatement(AbstractTable.java:730) 

 

 

1)新配置hive的时候,不要去设定编码为utf8,让hive自动新建mysql中的数据库hive(这点特别重要)。

2)检查发现hive库已经建成的时候,查看hive库的编码是latin1 

3)修改hive库为utf8,修改hive库中的所有的表为utf8,还要修改hive库中所有表的所有列为utf8,设置mysql的默认编码为utf8

alter database hive default character set utf8;

修改表的编码

alter table BUCKETING_COLS              default  character set  utf8;

alter table CDS                         default  character set  utf8;

alter table COLUMNS_V2                  default  character set  utf8;

alter table DATABASE_PARAMS             default  character set  utf8;

alter table DBS                         default  character set  utf8;

alter table FUNCS                       default  character set  utf8;

alter table FUNC_RU                     default  character set  utf8;

alter table GLOBAL_PRIVS                default  character set  utf8;

alter table PARTITIONS                  default  character set  utf8;

alter table PARTITION_KEYS              default  character set  utf8;

alter table PARTITION_KEY_VALS          default  character set  utf8;

alter table PARTITION_PARAMS            default  character set  utf8;

alter table PART_COL_STATS              default  character set  utf8;

alter table ROLES                       default  character set  utf8;

alter table SDS                         default  character set  utf8;

alter table SD_PARAMS                   default  character set  utf8;

alter table SEQUENCE_TABLE              default  character set  utf8;

alter table SERDES                      default  character set  utf8;

alter table SERDE_PARAMS                default  character set  utf8;

alter table SKEWED_COL_NAMES            default  character set  utf8;

alter table SKEWED_COL_VALUE_LOC_MAP    default  character set  utf8;

alter table SKEWED_STRING_LIST          default  character set  utf8;

alter table SKEWED_STRING_LIST_VALUES   default  character set  utf8;

alter table SKEWED_VALUES               default  character set  utf8;

alter table SORT_COLS                   default  character set  utf8;

alter table TABLE_PARAMS                default  character set  utf8;

alter table TAB_COL_STATS               default  character set  utf8;

alter table TBLS                        default  character set  utf8;

alter table VERSION                     default  character set  utf8;

 

修改列

alter table BUCKETING_COLS              convert to   character set  utf8;

alter table CDS                         convert to   character set  utf8;

alter table COLUMNS_V2                  convert to   character set  utf8;

alter table DATABASE_PARAMS             convert to   character set  utf8;

alter table DBS                         convert to   character set  utf8;

alter table FUNCS                       convert to   character set  utf8;

alter table FUNC_RU                     convert to   character set  utf8;

alter table GLOBAL_PRIVS                convert to   character set  utf8;

alter table PARTITIONS                  convert to   character set  utf8;

alter table PARTITION_KEYS              convert to   character set  utf8;

alter table PARTITION_KEY_VALS          convert to   character set  utf8;

alter table PARTITION_PARAMS            convert to   character set  utf8;

alter table PART_COL_STATS              convert to   character set  utf8;

alter table ROLES                       convert to   character set  utf8;

alter table SDS                         convert to   character set  utf8;

alter table SD_PARAMS                   convert to   character set  utf8;

alter table SEQUENCE_TABLE              convert to   character set  utf8;

alter table SERDES                      convert to   character set  utf8;

alter table SERDE_PARAMS                convert to   character set  utf8;

alter table SKEWED_COL_NAMES            convert to   character set  utf8;

alter table SKEWED_COL_VALUE_LOC_MAP    convert to   character set  utf8;

alter table SKEWED_STRING_LIST          convert to   character set  utf8;

alter table SKEWED_STRING_LIST_VALUES   convert to   character set  utf8;

alter table SKEWED_VALUES               convert to   character set  utf8;

alter table SORT_COLS                   convert to   character set  utf8;

alter table TABLE_PARAMS                convert to   character set  utf8;

alter table TAB_COL_STATS               convert to   character set  utf8;

alter table TBLS                        convert to   character set  utf8;

alter table VERSION                     convert to   character set  utf8;

 

show  create database  hive;

show  create  table  COLUMNS_V2;

 

 show variables like '%character%';

 修改配置,设置/etc/my.cnf 

[client]

character-set-server = utf8

default-character-set=utf8

 

 

再次进入hive的客户端。

Hive >

建表 

 CREATE TABLE test_chinese(

chnel_id string comment '渠道',

client_chnel_id string comment '客户端渠道',

client_child_chnel_id string comment '客户端子渠道'

)partitioned by (dt string)  row format delimited fields terminated by '|' lines terminated by '\n' stored as textfile;

desc   test_chinese;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值