将Matplotlib输出保存到DataRicks上的Blob存储

将Matplotlib输出保存到DataRicks上的Blob存储,matplotlib,databricks,azure-databricks,Matplotlib,Databricks,Azure Databricks,我正在尝试使用此处提供的方法将matplotlib图形写入Azure blob存储: 但是,当我将代码中的路径替换为 path = 'wasbs://test@someblob.blob.core.windows.net/' 我得到这个错误 [Errno 2]没有这样的文件或目录:'wasbs://test@someblob.blob.core.windows.net/' 我不明白这个问题…根据我的研究,您无法将Matplotlib输出直接保存到Azure Blob存储 您可以按照以下步骤将

我正在尝试使用此处提供的方法将matplotlib图形写入Azure blob存储:

但是,当我将代码中的路径替换为

path = 'wasbs://test@someblob.blob.core.windows.net/'
我得到这个错误

[Errno 2]没有这样的文件或目录:'wasbs://test@someblob.blob.core.windows.net/'


我不明白这个问题…

根据我的研究,您无法将Matplotlib输出直接保存到Azure Blob存储

您可以按照以下步骤将Matplotlib输出保存到Azure Blob存储:

步骤1:您需要先将其保存到Databrick文件系统(DBFS),然后将其复制到Azure Blob存储

将Matplotlib输出保存到Databricks文件系统(DBFS):我们使用以下命令将输出保存到DBFS:
plt.savefig('/DBFS/myfolder/Graph1.png')

步骤2:将文件从Databricks文件系统复制到Azure Blob存储

spark.conf.set("fs.azure.account.key.< Blob Storage Name>.blob.core.windows.net", "<Azure Blob Storage Key>")
有两种方法可以将文件从DBFS复制到Azure Blob Stroage

方法1:直接访问Azure Blob存储

通过设置“Spark.conf.set”直接访问Azure Blob存储,并将文件从DBFS复制到Blob存储

spark.conf.set("fs.azure.account.key.< Blob Storage Name>.blob.core.windows.net", "<Azure Blob Storage Key>")
使用dbutils.fs.cp将文件复制到Azure Blob存储容器:

dbutils.fs.cp('dbfs:/myfolder/Graph1.png','/dbfs/mnt/chepra')

通过遵循方法1或方法2,您可以成功地将输出保存到Azure Blob存储

spark.conf.set("fs.azure.account.key.< Blob Storage Name>.blob.core.windows.net", "<Azure Blob Storage Key>")

有关详细信息,请参阅“”


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

这也是我目前提出的问题。为了从blob中重新加载图像并在DataRicks笔记本中再次显示为png,我使用以下代码:

blob_path = ...
dbfs_path = ...
dbutils.fs.cp( blob_path, dbfs_path ) 

with open( dbfs_path, "rb" ) as f:
  im = BytesIO( f.read() )

img = mpimg.imread( im ) 
imgplot = plt.imshow( img )
display( imgplot.figure )

您可以使用.savefig()直接写入Azure blob存储-只需在安装blob容器之前

以下内容对我很有用,我将blob容器安装为/mnt/mydatalakemount

plt.savefig('/dbfs/mnt/mydatalakemount/plt.png')

有关安装blob容器的文档如下所示

plt.savefig('/dbfs/mnt/mydatalakemount/plt.png')
fig.savefig('/dbfs/mnt/mydatalakemount/fig.png')