麻煩閱讀外部JDBC 5.5表從磚改造後運行時

無法讀取外部JDBC表從磚升級後運行時5.5到6.0以上。

寫的Mohammed.Haseeb

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

問題

試圖讀取外部表通過JDBC 5.5磚上運行時沒問題,但相同的表上麵的磚6.0運行時,讀取失敗。

你看到一個錯誤類似如下:

com.databricks.backend.common.rpc.DatabricksExceptions SQLExecutionException美元:java . util . concurrent。ExecutionException: org.apache.spark.sql。AnalysisException: org.apache.spark.sql。jdbc不允許用戶指定的模式。com.google.common.util.concurrent.AbstractFuture Sync.getValue美元(AbstractFuture.java: 299)美元com.google.common.util.concurrent.AbstractFuture Sync.get (AbstractFuture.java: 286) com.google.common.util.concurrent.AbstractFuture.get (AbstractFuture.java: 116) java.lang.Thread.run (Thread.java: 748)。引起的:org.apache.spark.sql。AnalysisException: org.apache.spark.sql。jdbc不允許用戶指定的模式。org.apache.spark.sql.execution.datasources.DataSource.resolveRelation (DataSource.scala: 350)

導致

磚5.5運行時,以下推斷session_id屬性作為一個短整型。磚運行時6.0及以上的推斷session_id屬性作為一個int

這種變化的session_id屬性查詢失敗原因與模式問題。

解決方案

如果使用外部表創建在磚磚下麵5.5運行時,運行時6.0及以上,必須設置Apache火花配置spark.sql.legacy.mssqlserver.numericMapping.enabled真正的。這將確保磚運行時6.0及以上的推斷session_id屬性作為一個短整型

  1. 打開集群頁麵。
  2. 選擇一個集群。
  3. 點擊編輯
  4. 點擊高級選項
  5. 點擊火花
  6. 火花配置字段中,輸入spark.sql.legacy.mssqlserver.numericMapping.enabled真正的
  7. 保存更改並開始或重新啟動集群。
這篇文章有用嗎?