問題
您正在連接到一個外部MySQL metastore,並試圖在遇到錯誤時創建一個表。
AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(消息:在添加/驗證類(es)時拋出異常:(conn=21)列長度太大,列'PARAM_VALUE' (max = 16383);使用BLOB或TEXT代替。
導致
當默認字符集為時,這是MySQL 8.0的一個已知問題utfmb4.
可以通過在有錯誤的數據庫上運行查詢來確認這一點。
%sql SELECT default_character_set_name FROM information_schemaSCHEMATA S WHERE schema_name = ""
解決方案
您需要更新或重新創建數據庫,並將字符集設置為latin1.
選項1
- 在Hive數據庫中手動運行create語句默認字符集= latin1在每個結尾創建表聲明。
%sql CREATE TABLE ' TABLE_PARAMS ' (' TBL_ID ' BIGINT NOT NULL, ' PARAM_KEY ' VARCHAR(256) BINARY NOT NULL, ' PARAM_VALUE ' VARCHAR(4000) BINARY NOT NULL, CONSTRAINT ' TABLE_PARAMS_PK '主鍵(' TBL_ID ', ' PARAM_KEY '))
- 重新啟動Hive metastore並重複操作,直到所有創建錯誤都得到解決。
選項2
- 設置數據庫和用戶帳戶。
- 創建數據庫並運行修改數據庫hive字符集latin1在啟動亞穩態之前。
該命令設置默認值字符集對於數據庫。當metastore創建表時應用它。