当我尝试从HTTP
加载Azure Databricks
中文件的内容时,出现间歇性ADLS Gen2
错误。已使用与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条件标头指定的条件。
RequestId:51fbfff7-d01f-002b-49aa-4c89d5000000
时间:2019-08-06T22:55:14.5585584Z
此错误并非与文件系统中的所有文件有关。我可以加载大多数文件。该错误仅与某些文件有关。不知道这里是什么问题。任何帮助将不胜感激。
答案 0 :(得分:1)
此问题现已解决。根本问题是由于Microsoft端的更改。这是我从Microsoft支持部门获得的RCA:
在最新的存储租户升级期间,某个存储配置未正确打开。仅当最新升级的租户上启用了名称空间的帐户出现这种类型的错误。缓解此问题的方法是关闭特定租户的配置,我们已经为所有租户启动了超级声音配置部署。此后,我们为ADLS Gen 2添加了附加的存储升级验证,以帮助涵盖此类情况。
答案 1 :(得分:0)
我今天在一个文件上遇到了同样的问题。下载文件,将其从存储中删除,然后放回原处即可解决此问题。 试图重命名文件->无效。
编辑:我们将它随机存储在更多文件中。 我们通过将整个文件夹复制到新文件夹并将其重命名为原始文件夹来解决此问题。作业再次运行没有问题。
问题仍然存在,为什么文件在这种情况下会结束?
答案 2 :(得分:0)
同一问题。经过一些研究,看来这可能是http GET请求中的 If-Match eTag条件失败。 Microsoft讨论了如何在发生此情况时返回错误412:https://azure.microsoft.com/de-de/blog/managing-concurrency-in-microsoft-azure-storage-2/
无论如何,Databricks似乎已经解决了该问题。