在 Databricks 中读取 blob 存储中的数据

Posted

技术标签:

【中文标题】在 Databricks 中读取 blob 存储中的数据【英文标题】:Read data in blob storage in Databricks 【发布时间】:2020-05-28 22:27:34 【问题描述】:

尝试从 DataBricks 读取我在 blob 存储中的数据

spark.conf.set(
  "fs.azure.account.key.ACCOUNTNAME.blob.core.windows.net",
  "MYKEY")

这应该允许连接到我的存储 blob

那么,根据documentation,应该很容易访问我的blob中的文件。

我尝试了很多东西,没有任何效果

一个例子

blob_url = "https://ACCOUNTNAME.blob.core.windows.net/BLOBNAME/PATH/file"
df=pd.read_csv(blob_url)

返回

HTTP 错误 404:指定的资源不存在。

有什么想法吗?如果需要,我可以通过错误消息显示我的所有尝试

另一个错误

%scala

dbutils.fs.ls("wasbs://ACCOUNTNAME@BLOBNAME.blob.core.windows.net/PATH")

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

【问题讨论】:

【参考方案1】:

您可以查看以下代码以使用 Azure Databricks 从 Blob 存储中读取数据。

# Set up an account access key:
# Get Storage account Name and 

spark.conf.set("fs.azure.account.key.chepra.blob.core.windows.net", "gv7nVISerl8wbK9mPGm8TC3CQIEjV3Z5dQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxldlOiA==")
df = spark.read.csv("wasbs://sampledata@chepra.blob.core.windows.net/Azure/AzureCostAnalysis.csv", header="true")
df.show()

对于 dbutils.fs.ls 不需要使用像 %scala 这样的魔法单元,您可以使用下面的代码来生成容器中的所有文件:

# Get file information 
dbutils.fs.ls("wasbs://sampledata@chepra.blob.core.windows.net/Azure")

希望这会有所帮助。如果您有任何进一步的疑问,请告诉我们。

【讨论】:

我有错误消息shaded.databricks.org.apache.hadoop.fs.azure.AzureException: com.microsoft.azure.storage.StorageException: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. 能否请您仔细检查您正在使用的存储密钥和存储容器名称?

以上是关于在 Databricks 中读取 blob 存储中的数据的主要内容,如果未能解决你的问题,请参考以下文章

从 Azure Databricks 将数据写入 Azure Blob 存储

Azure - 为存储容器中的每个新 blob 触发 Databricks 笔记本

如何使用 SAS 读取 Azure databricks 中的 blob

Azure Databricks:访问防火墙后面的 Blob 存储

安装 Blob 存储的 Azure Databricks

Azure Databricks 在 Blob 存储上打开文件时出现问题