與外部蜂巢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創建表。

這篇文章有用嗎?