問題
在Athena中創建一個外部表,並使用指令將其與Delta Lake集成在一起Presto和雅典娜到三角洲湖的整合文檔。
Athena中的外部表在Apache Hive metastore中定義。
您從Athena查詢編輯器對外部表運行一個選擇查詢,它返回一個HIVE_CURSOR_ERROR.
//
導致
問題的根本原因在於Hive和Apache Spark中使用的Parquet約定不同。
在Spark 1.4及以上版本中,使用當前的Parquet格式,並將十進製值寫成整數。在Parquet格式的早期版本中,十進製值是用Apache的固定長度字節數組格式寫入的。其他Apache係統(如Hive和Apache Impala)也使用這種Parquet格式。
因此,當由於使用了兩種Parquet格式而導致數據類型的內部表示形式不同時,您將收到一個錯誤。
解決方案
如果你正在使用Athena或Presto訪問Delta Lake管理的表,Parquet文件必須以與Hive兼容的格式創建。
你不能在Hive中選擇Parquet約定,但你可以在Spark中這樣做。
設置spark.conf.set(“spark.sql.parquet.writeLegacyFormat”,真的)屬性以解決該問題。
設置集群級別的屬性。
- 編輯集群屬性。
- 點擊高級選項.
- 選擇火花.
- 中輸入屬性設置火花配置字段。
- 確認更改。
- 重新啟動集群。
請檢查劇場正廳座位配置獲取更多信息的文檔。