问题
你连接到一个外部MySQL metastore和试图创建一个表,当你得到一个错误。
AnalysisException: org.apache.hadoop.hive.ql.metadata。HiveException: MetaException(信息:是抛出一个异常时添加/验证类(es):(康涅狄格州= 21)列长度太大列“PARAM_VALUE”(max = 16383);使用BLOB或文本。
导致
这是一个已知的问题使用MySQL 8.0默认的字符集utfmb4。
你可以证实这一点上运行一个查询的数据库错误。
% sql SELECT default_character_set_name information_schema。图式年代schema_name = " <数据库名称>”
解决方案
你需要更新或重新创建数据库和设置字符集latin1。
选项1
- 手动运行创建语句在蜂房里的数据库默认字符集= latin1在每个创建表声明。
% sql创建表“TABLE_PARAMS”(“TBL_ID”BIGINT不是NULL, PARAM_KEY的VARCHAR(256)二进制NOT NULL, PARAM_VALUE的VARCHAR(4000)二进制零约束TABLE_PARAMS_PK的主键(“TBL_ID”、“PARAM_KEY”))引擎= INNODB默认字符集= latin1;中的一个
- 重新启动蜂巢metastore和重复,直到所有创建错误已经得到解决。
选项2
- 设置数据库和用户帐户。
- 创建数据库和运行改变数据库蜂巢字符集latin1;中的一个在你启动metastore。
这个命令设置默认字符集为数据库。用于当metastore创建表。