在雅典娜HIVE_CURSOR_ERROR當讀表

當你試圖讀取一個表在雅典娜,select查詢返回HIVE_CURSOR_ERROR消息。

寫的annapurna.hiriyur

去年發表在:2022年5月10日

問題

你創建一個外部表在雅典娜和集成與三角洲湖使用中的指令轉眼間,雅典娜三角洲湖集成文檔。

雅典娜的外部表中定義Apache蜂巢metastore。

你運行一個select查詢外部表從雅典娜查詢編輯器,它返回一個HIVE_CURSOR_ERROR

HIVE_CURSOR_ERROR:不能讀值在塊0 0文件s3: / / < parquet-file-path >

導致

問題的根源是蜂巢中使用的不同的鑲花約定和Apache火花。

在火花1.4或以上,使用當前的拚花格式,和十進製值被編寫為整數。在早期版本的鑲花格式,十進製值寫在Apache的固定長度的字節數組的格式。這個鑲花格式使用其他Apache係統如蜂巢和Apache黑斑羚。

結果,您就會收到一個錯誤的內部表示數據類型不同的是由於使用兩個拚花格式。

解決方案

如果您使用的是雅典娜或很快訪問三角洲湖管理表、鑲花的文件必須創建的格式兼容蜂巢。

你不能選擇在蜂巢的鑲花大會,但可以與火花。

設置spark.conf.set (“spark.sql.parquet.writeLegacyFormat”,真的)房地產在集群級別或在筆記本上解決這個問題。

在集群級別設置屬性:

  1. 編輯集群屬性。
  2. 點擊高級選項
  3. 選擇火花
  4. 輸入的屬性設置火花配置字段。
  5. 確認更改。
  6. 重新啟動集群。
刪除

信息

改變表的DDL與火花數據類型不返回任何查詢結果。spark.conf.set (“spark.sql.parquet.writeLegacyFormat”,真的)必須設置。

請檢查劇場正廳座位配置文檔的更多信息。



這篇文章有用嗎?