麻烦阅读外部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. 保存更改并开始或重新启动集群。
这篇文章有用吗?