排查 Delta Sharing 中的常见共享问题

以下部分介绍尝试在共享中访问数据时可能发生的常见错误。

超出资源限制错误

问题:对共享表的查询返回错误

  • "RESOURCE_LIMIT_EXCEEDED","message":"The table metadata size exceeded limits"
  • "RESOURCE_LIMIT_EXCEEDED","message":"The number of files in the table to return exceeded limits, consider contact your provider to optimize the table"

可能的原因:对于共享表,元数据中允许的文件数量存在限制。

Recommended fix:若要了解如何解决这些问题,请参阅 Databricks Knowledge Base 中的 RESOURCE_LIMIT_EXCEEDED 错误 对 Delta Sharing 表的查询。

清空数据文件问题

问题:您看到了一条错误消息,显示“404 指定的 [path|key] 不存在”异常。

Spark 错误示例:

java.lang.Throwable: HTTP request failed with status: HTTP/1.1 404 The specified path does not exist.

HTTP request failed with status: HTTP/1.1 404 Not Found <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message>

可能的原因:通常情况下,出现此错误是由于与预签名 URL 相对应的数据文件在共享表中清空,而该数据文件属于历史表版本。

解决方法:查询最新快照。

Open Source Spark 的架构不匹配错误

Issue:使用 Open Source Spark(OSS)时,读取 Delta Sharing 表时会出现模式不匹配错误。

错误示例::

py4j.protocol.Py4JJavaError: An error occurred while calling o85.count.: org.apache.spark.SparkException: The schema or partition columns of your Delta table has changed since your DataFrame was created. Please redefine your DataFrame

可能的原因:创建 DataFrame 后,Delta 表的架构或分区列已更改。

建议的修复:将 Spark 配置标志 spark.delta.sharing.client.useStructuralSchemaMatch 设置为 true

spark.conf.set("spark.delta.sharing.client.useStructuralSchemaMatch", "true")

Storage网络配置问题

问题:你会看到一条触发 SSLCertVerificationError 的错误消息。

Spark 错误示例:

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)

可能的原因:通常此错误是由于共享表或卷的存储位置存在网络限制。

Recommended fix:在存储提供程序接口中,通过允许存储帐户防火墙设置中的客户端 IP,允许访问存储位置。

共享物化资产访问问题

问题:对共享视图、具体化视图或流式处理表的查询返回错误 DS_MATERIALIZATION_QUERY_FAILED

"DS_MATERIALIZATION_QUERY_FAILED": "The shared asset could not be materialized due to the asset not being accessible in the materialization workspace. Please ask data provider to contact :re[DB] support to override the materialization workspace."

可能的原因:提供者没有对他们尝试共享的资产的读写权限。

Recommended fix:请与数据提供商联系,确保他们具有对共享数据资产的读写访问权限。

数据物化期间网络访问错误

Issue:对共享数据资产的查询返回了关于访问数据提供商云存储的错误。

There was an issue accessing the data provider's cloud storage. Shared view materialization uses the Serverless compute of data provider's region to perform the materialization. Please contact the data provider to allowlist Serverless compute IPs of their corresponding region to access the view's dependent tables storage location.

可能的原因:具体化数据的存储位置存在网络限制(例如防火墙或专用链接),导致 Azure Databricks 无服务器计算无法访问数据。 共享视图、具体化视图或流式处理表时,数据将暂时在提供程序端进行具体化处理。 具体化存储位置是资产的父架构或目录存储位置。

Recommended fix:数据提供者需要将其对应区域的无服务器计算 IP 列入允许列表,以便访问视图依赖表的存储位置。

数据资产“不存在”错误

如果单击共享资产并遇到对象“不存在”错误,则提供程序端的共享所有者可能没有足够的资产权限。 请与数据提供程序联系,并要求他们验证共享所有者是否对所有共享资产具有所需的权限。 有关共享所有者共享数据资产所需的权限的详细信息,请参阅 “要求 ”和 “授予收件人共享访问权限”。