解决 Synapse Serverless:使用 OPENROWSET 查询镶木地板文件时出现 IO ERROR = 0x00000005(不影响 Spark 池!)

问题描述 投票:0回答:1

问题

我在 Azure Data Lake 存储中有一个 parquet 文件。 我正在尝试使用

OPENROWSET
:

从 Synapse Serverless 查询它
SELECT TOP 100 *
FROM
    OPENROWSET(
        BULK 'https://example.dfs.core.windows.net/container/path/to/file.parquet',
        FORMAT = 'PARQUET'
    ) AS [result]

当前配置工作直到最近。 现在它回来了:

Error handling external file: 'IO request completed with an error. ERROR = 0x00000005'. File/External table name: 'https://example.dfs.core.windows.net/container/path/to/file.parquet'

这个错误的原因是什么?我该如何排除故障?

奇怪的是,返回了标头,但没有返回数据。所以 Synapse 至少正在读取 Parquet 文件的一部分。

仍然有效的事情:

  • 使用 Synapse Spark 池查询文件:

    %%pyspark
    df = spark.read.load('abfss://[email protected]/path/to/file.parquet', format='parquet')
    display(df.limit(10))
    
  • Data > Linked > Attached storage > Container > file.parquet

    下显示数据湖文件列表
  • 验证链接服务连接在

    Manage > Linked services > service > Test connection
    下仍然有效(在测试链接服务和文件路径时有效。)

配置

  • 将服务链接到 azure 存储(Synapse 工作区默认)
  • 通过 AutoResolveIntegrationRuntime 连接
  • 系统分配的托管身份(具有
    Storage Blob Data Contributor
    访问权限)
  • 托管专用端点(已批准)

更多错误

如果我尝试使用

OPENROWSET
查询 CSV 文件,则会收到此错误:

Error encountered while parsing data: 'waitIOCompletion error. HRESULT = 0x80070005(offset = 0, bytes requested = 728).'. Underlying data description: file 'https://example.dfs.core.windows.net/path/to/file.csv'
azure-synapse azure-data-lake
1个回答
0
投票

我尝试使用 OPENROWSET 但没有收到错误消息

enter image description here

  • 错误消息“
    WaitIOCompletion call failed
    ”表示等待从 Azure Data Lake 读取数据的操作完成时查询出现问题。
  • 错误消息通常以这种格式显示:
    "Error handlingexternal file: 'WaitIOCompletion call failed. HRESULT = ???'.File/External table name..."
  • 确保您的存储位于与 无服务器 SQL 池。验证存储层上没有其他工作负载(例如上传新文件)可能会导致 I/O 请求饱和。

字段 HRESULT 包含结果代码。 以下错误代码

ERROR = 0x00000005
HRESULT = 0x80070005

'IO 请求完成但有错误。处理 Azure Data Lake Storage 中的外部文件时出现“

ERROR = 0x00000005
”错误。 错误信息“
WaitIOCompletion call failed
” 表明从 Azure Data Lake(Microsoft Azure 提供的远程存储服务)读取数据时等待输入/输出 (I/O) 操作完成时出现问题。

  • 为了解决该问题,您可以重新创建 Synapse Serverless 数据库。
  • 重新创建数据库主密钥。
  • 只需重新创建主密钥就可以解决该问题。

关于

HRESULT = 0x80070005

  • 使用用户身份认证方式时可能会出现此错误,
  • 当明确授予权限时,可以解决这个问题 文件。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.