在 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