如何使用 SAS 读取 Azure databricks 中的 blob
Posted
技术标签:
【中文标题】如何使用 SAS 读取 Azure databricks 中的 blob【英文标题】:How to read a blob in Azure databricks with SAS 【发布时间】: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。
【问题讨论】:
【参考方案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。
【讨论】:
如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。以上是关于如何使用 SAS 读取 Azure databricks 中的 blob的主要内容,如果未能解决你的问题,请参考以下文章
要上传的特定文件的 Azure SAS 令牌?具有读取和到期时间(JAVA)
如何使用 Javascript SDK 为 Azure 存储生成用户委托 SAS
完成文件上传后,如何使用 nodejs 撤销 Azure 的共享访问签名(SAS)?