【问题标题】:How to read a blob in Azure databricks with SAS如何使用 SAS 读取 Azure databricks 中的 blob
【发布时间】:2020-07-07 19:22:41
【问题描述】:

我是 Databricks 的新手。我编写示例代码来读取 Azure Databricks 中的存储 Blob。

blob_account_name = "sars"
blob_container_name = "mpi"
blob_sas_token =r"**"
ini_path = "58154388-b043-4080-a0ef-aa5fdefe22c8"

inputini = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, ini_path)
spark.conf.set("fs.azure.sas.%s.%s.blob.core.windows.net"% (blob_container_name, blob_account_name), blob_sas_token)

print(inputini)
ini=sc.textFile(inputini).collect()

它抛出错误:

Container mpi in account sars.blob.core.windows.net not found

我猜它没有在 WASBS 链接中附加 SAS 令牌,因此它没有读取数据的权限。

如何在 wasbs 链接中附加 SAS。

【问题讨论】:

    标签: azure databricks azure-databricks


    【解决方案1】:

    这是例外行为,您无法从 Databricks 访问读取的私有存储。为了从启用了防火墙或在 vnet 中创建的存储访问私有数据,您必须在 Azure 虚拟网络中部署 Azure Databricks,然后将存储帐户防火墙中的 Vnet 地址范围列入白名单。您可以参考配置 Azure Storage 防火墙和虚拟网络。

    具有私人访问权限:

    当您为“私人(无匿名访问)”提供访问级别时。

    输出:错误消息

    shaded.databricks.org.apache.hadoop.fs.azure.AzureException: shaded.databricks.org.apache.hadoop.fs.azure.AzureException: 找不到帐户 cheprasas.blob.core.windows.net 中的容器 carona ,并且我们无法使用匿名凭据创建它,并且在配置中找不到它们的凭据。

    具有容器访问权限:

    当您提供对“Container(容器和 Blob 的匿名读取访问权限)”的访问级别时。

    输出:您将能够毫无问题地看到输出。

    参考:Quickstart: Run a Spark job on Azure Databricks using the Azure portal

    【讨论】:

    • 如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。
    猜你喜欢
    • 2021-11-10
    • 2019-08-06
    • 2022-01-17
    • 2023-03-04
    • 1970-01-01
    • 2022-01-01
    • 2022-01-19
    • 2018-03-20
    • 2018-07-30
    相关资源
    最近更新 更多