【问题标题】:Azure Databricks error: AzureException: hadoop_azure_shaded.com.microsoft.azure.storage.StorageException: Server failed to authenticate the requestAzure Databricks 错误:AzureException:hadoop_azure_shaded.com.microsoft.azure.storage.StorageException:服务器无法对请求进行身份验证
【发布时间】:2021-08-23 00:31:57
【问题描述】:

我正在尝试执行此命令,但在很多情况下,它都会返回此错误。

spark.sql("""drop table if exists """ + L2_STAGE + """.STERLING_INCREMENT_STAGE_DELTA""") dbutils.fs.rm("dbfs:/mnt/data/governed/l2/stage/order/dtc_mergedstage/", true) spark.sql("""drop table if exists """ + L2_STAGE + """.sterling_increment_stage_delta_ol""") dbutils.fs.rm("dbfs:/mnt/data/governed/l2/stage/order/order_line_stg/", true) spark.sql("""drop table if exists """ + L2_STAGE + """.STERLING_INCREMENT_STAGE_DELTA_str""") dbutils.fs.rm("dbfs:/mnt/data/governed/l2/stage/order/dtc_mergedstage_str/", true) spark.sql("""drop table if exists """ + L2_STAGE + """.sterling_increment_stage_delta_ol_str""") dbutils.fs.rm("dbfs:/mnt/data/governed/l2/stage/order/order_line_stg_str/", true)

这会返回这个错误:

AzureException:hadoop_azure_shaded.com.microsoft.azure.storage.StorageException:服务器未能对请求进行身份验证。确保 Authorization 标头的值正确形成,包括签名。 原因:StorageException:服务器未能对请求进行身份验证。确保 Authorization 标头的值格式正确,包括签名。

有人可以告诉我有什么问题吗?管理员说我所有同事的访问级别都是一样的,他不知道如何解决。我不知道这是要从 Databricks 还是通过 Azure 门户解决的问题。

我也意识到:

  • 当我尝试从表中读取或尝试删除表时发生错误。但我可以创建表格。
  • 我可以执行这个命令:
%fs
ls /mnt/edap/data/governed

没有错误。

但是,

%fs
ls /mnt/data/governed

给出同样的错误。

**'edap' 是一个 Azure Blob 容器。

我希望有人可以帮助解决这个错误。

【问题讨论】:

  • 你能告诉我你是如何挂载容器的吗?
  • 他的吉姆!谢谢你的评论。我所要做的就是卸载它并且它起作用了。这是我第一次使用它,我只是犯了一个错误,不知道该怎么办。谢谢!

标签: python sql azure apache-spark


【解决方案1】:

很高兴听到您的问题现已解决。只需帮助您将其发布为关闭问题的答案即可:

  • “我所要做的就是卸载它,它就可以工作了。”

如果您方便的话,如果您能向我们展示更多详细信息,我们将不胜感激。

【讨论】:

    【解决方案2】:

    我不太清楚并注意到我已经安装了一个驱动器,并且只需要卸载它才能让事情正常运行。我必须在 DBFS 中导航到我安装的路径。安装的驱动器 a 具有不同的图标,例如容器或烧瓶,而其他驱动器具有文件夹图标。我单击下拉菜单并将其卸载。这解决了我的问题。

    【讨论】:

      【解决方案3】:

      我假设路径 /mnt/data/ 应该指向您组织的 Azure 租户中某处的存储容器。此外,我假设您打算将数据保存在您的组织控制的容器中。

      我相信你还没有解决你的问题。目前,您的表很可能会写入dbfs:(为您的 Databricks 实例预留的容器)中的文件路径,而不是写入您组织的 Azure 容器。

      %fs ls /mnt/edap/data/governed 命令有效,因为它指向正确安装的/mnt/edap 容器。同样,%fs ls /mnt/data/ 现在可以工作了,因为它指向了dbfs: 中权限不存在问题的目录。

      问题是/mnt/data/ 的容器一开始就没有正确安装。

      这是我犯的导致同样错误的错误:

      我尝试使用此处的说明安装容器:https://docs.databricks.com/data/data-sources/azure/azure-storage.html

      但是,我尝试挂载的容器存在于 Azure Gen2 数据湖中。安装容器的正确方法可以在这里找到:https://docs.databricks.com/data/data-sources/azure/adls-gen2/azure-datalake-gen2-sp-access.html

      如果有问题的容器确实只是一个 blob 存储实例,请仔细检查您的代码以安装容器。

      【讨论】:

        猜你喜欢
        • 2015-11-28
        • 1970-01-01
        • 2020-01-29
        • 2022-09-27
        • 2014-09-19
        • 1970-01-01
        • 1970-01-01
        • 2016-04-04
        • 1970-01-01
        相关资源
        最近更新 更多