【问题标题】:Intermittent HTTP error when loading files from ADLS Gen2 in Azure Databricks从 Azure Databricks 中的 ADLS Gen2 加载文件时出现间歇性 HTTP 错误
【发布时间】:2019-08-07 00:42:08
【问题描述】:

当我尝试从ADLS Gen2 加载Azure Databricks 中的文件内容时,出现间歇性HTTP 错误。存储帐户已使用与 Databricks 关联的服务主体装载,并已通过 RBAC 对数据湖存储帐户授予Storage Blob Data Contributor 访问权限。要加载的示例语句是

df = spark.read.format("orc").load("dbfs:/mnt/{storageaccount}/{filesystem}/{filename}")

我得到的错误信息是:

Py4JJavaError: 调用 o214.load 时出错。 : java.io.IOException: GET https://{storageaccount}.dfs.core.windows.net/{filesystem}/{filename}?timeout=90 StatusCode=412 StatusDescription=不满足使用 HTTP 条件标头指定的条件。
ErrorCode=ConditionNotMet ErrorMessage=不满足使用 HTTP 条件标头指定的条件。
请求编号:51fbfff7-d01f-002b-49aa-4c89d5000000
时间:2019-08-06T22:55:14.5585584Z

此错误并非与文件系统中的所有文件有关。我可以加载大部分文件。该错误仅与某些文件有关。不知道这里有什么问题。任何帮助将不胜感激。

【问题讨论】:

  • 请通过门户向 Microsoft 提出支持案例。我们昨天也看到了这一点,并且正在做同样的事情。显然有些东西改变了/坏了。出于对您所在位置的兴趣,我们在北欧。
  • 我们在北欧,面临同样的问题..将提出支持票。
  • 我们已经向微软提出了这个问题。除了确认这不是权限问题外,目前没有任何实际进展。当我们从 Microsoft 获得解决方案时将发布解决方案。我们的实例位于澳大利亚东部。

标签: azure-data-lake azure-databricks


【解决方案1】:

这个问题现在已经解决了。根本问题是由于微软端的变化。这是我从 Microsoft 支持部门获得的 RCA:

在最近一次存储租户升级期间,有一个存储配置未正确打开。这种类型的错误只会显示在最新升级的租户上启用命名空间的帐户。此问题的缓解方法是关闭特定租户的配置,我们已经开始为所有租户推出超音速配置。此后,我们为 ADLS Gen 2 添加了额外的存储升级验证,以帮助覆盖此类场景。

【讨论】:

    【解决方案2】:

    我今天在一个文件上遇到了同样的问题。下载文件,将其从存储中删除并将其放回原处解决了该问题。 尝试重命名文件-> 无效。

    编辑:我们将它放在更多文件上,随机的。 我们通过将整个文件夹复制到一个新文件夹并将其重命名为原始文件夹来解决此问题。作业再次运行没有问题。

    问题仍然存在,为什么文件会出现这种情况?

    【讨论】:

      【解决方案3】:

      这里也是同样的问题。经过一番研究,这似乎可能是 http GET 请求中的 If-Match eTag 条件失败。微软在这篇文章中讨论了当发生这种情况时他们将如何返回错误 412:https://azure.microsoft.com/de-de/blog/managing-concurrency-in-microsoft-azure-storage-2/

      无论如何,Databricks 现在似乎已经解决了这个问题。

      【讨论】:

        猜你喜欢
        • 2021-01-30
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 2021-11-25
        • 1970-01-01
        • 2021-10-26
        相关资源
        最近更新 更多