首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Hive Metastore 使用 Oracle 報錯 ORA-01754:LONG 類型衝突解決方案

     編輯:程式設計疑難解答

錯誤分析


ORA-01754: a table may contain only one column of type LONG

Hive Metastore Schema(package.jdo)對 Oracle 定義了多個 LONG VARCHAR 欄位,Oracle 限制**每張表僅能有一個 LONG 類型欄位**(已棄用,建議用 CLOB)。

修改 JDO 檔案流程(原回答方向正確,但需完整重建)

  1. 解壓 hive-metastore-.jar。
  2. 修改 package.jdo:將所有 LONGVARCHAR 替換為 CLOB。
  3. **重新打包 JAR** 並替換 $HIVE_HOME/lib 下原檔案。
  4. 關鍵步驟:刪除舊 Metastore 資料庫 Schema(或備份後 Drop),重新執行 schematool -initSchema -dbType oracle 初始化。

為何直接初始化失效?

Hive 啟動時若檢測到資料庫已存在表,**不會自動修改欄位類型**。必須在乾淨資料庫上重新建表,新的 JDO 定義才會生效。

替代方案:手動執行升級腳本

$HIVE_HOME/scripts/metastore/upgrade/oracle/ 下有現成 SQL,可直接在 Oracle 執行建表/修改欄位,再啟動服務。

HiveServer2 無反應

通常為端口衝突(10000)、日誌級別過低、或 Metastore 連不上。檢查 hive-server2.log,確認 hive.metastore.uris 指向正確 Thrift 服務。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved