与外部蜂巢metastore错误创建表

创建表的错误使用MySQL 8.0外部蜂巢metastore字符集。

写的jordan.hicks

去年发表在:2022年5月16日

问题

你连接到一个外部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

  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;中的一个
  2. 重新启动蜂巢metastore和重复,直到所有创建错误已经得到解决。

选项2

  1. 设置数据库和用户帐户。
  2. 创建数据库和运行改变数据库蜂巢字符集latin1;中的一个在你启动metastore。

这个命令设置默认字符集为数据库。用于当metastore创建表。

这篇文章有用吗?