azure - 使用 GZIP 编解码器在 Azure Synapse Analytics 中针对 csv.gz 文件执行 COPY 语句时收到错误

标签 azure csv gzip azure-synapse

我有一个COPY INTO将 csv.gz 文件从 Blob 存储帐户加载到 Azure Synapse 实例的语句在几乎整整一小时 (01:00:08) 后重复失败,并显示以下错误消息;

Error occurred while decoding 'https://somestorageaccount.blob.core.windows.net/container/file.csv.gz' using GZIP codec. Codec error code: -5. Codec error message: <unknown>

我使用服务主体作为凭据来执行脚本 ( followed this guide ),如下所示;

COPY INTO [Schema].[tbTable]
FROM 'https://somestorageaccount.blob.core.windows.net/container/file.csv.gz'
WITH  (
    CREDENTIAL = (IDENTITY= 'xxx-123-abc@https://login.microsoftonline.com/abc-xxx-123/oauth2/token', SECRET='123-secretvalue-xxx'),
    FILE_TYPE = 'CSV',
    COMPRESSION = 'GZIP',
    FIELDTERMINATOR = ',',
    FIELDQUOTE = '"',
    ENCODING = 'UTF8',
    FIRSTROW = 2
);

我已使用设置为存储帐户 key 的凭据测试了此脚本,但没有遇到相同的问题。我希望设置一个服务主体来执行脚本。

我怀疑脚本在一小时后重复失败(超时?)。这可能是服务主体权限问题吗?我找不到任何表明使用此身份发出的进程超时的信息。

最佳答案

我最终从 Microsoft Azure Synapse Analytics 支持升级工程师那里得到了答案。响应是应用程序 token 的 TTL 为 1 小时,因此这就是我的脚本失败的原因。

下面是微软工程师的回复;

下面是我们合作的案例摘要,以便您可以保存以供将来引用。

  • 症状:将 csv.gz 文件从 Blob 存储帐户加载到 SQL DW 实例的 COPY INTO 语句在几乎一小时 (01:00:08) 后重复失败,并出现错误下面留言;
    • 对 SQL Server 执行失败。 SQL错误号:13820。错误
      消息:解码时发生错误 'https://somestorageaccount.blob.core.windows.net/container/file.csv.gz' 使用 GZIP 编解码器。编解码器错误代码:-5。编解码器错误消息:未知
  • 原因:与 AAD 的人员同步后,我们确认应用 token 的 TTL 为 1 小时。内部 MS 租户(如我们用来测试的租户)配置了自定义 24 小时 TTL。这种不一致就是造成困惑的原因。不幸的是,DW(openrowset 后端)中的 native 代码路径不支持 token 刷新,因此 1 小时是一个硬限制。这方面的积压工作有所改善。

cx 的几个选项:

关于azure - 使用 GZIP 编解码器在 Azure Synapse Analytics 中针对 csv.gz 文件执行 COPY 语句时收到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66529734/

相关文章:

java - 从 microsoft azure mysql 恢复 mysql 数据

postgresql - 如何在 PostgreSQL 中以 CSV 字符格式导入 ñ, Ã

java - GZIPInputStream .read() 限制

使用 API 管理服务时的 Azure Blob 列表 "Value for one of the query parameters specified in the request URI is invalid"

azure - 我需要更改哪些内容才能成功部署多订阅 Bicep 警报规则?

python加载带有引号字段的csv文件,其中逗号用作1000s分隔符

python - 如何删除 csv 文件中的一列值但不删除第一项?

iphone - ASIHTTPRequest gzip 解压

python - GzipFile 中的缓冲

azure - Azure APIM 中的网关是什么?