根据我的研究,您不能将 Matplotlib 输出直接保存到 Azure Blob 存储。
您可以按照以下步骤将 Matplotlib 输出保存到 Azure Blob Storage:
第 1 步:您需要先将其保存到 Databrick 文件系统 (DBFS),然后将其复制到 Azure Blob 存储。
将 Matplotlib 输出保存到 Databricks 文件系统 (DBFS):我们使用以下命令将输出保存到 DBFS:plt.savefig('/dbfs/myfolder/Graph1.png')
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'fruits':['apple','banana'], 'count': [1,2]})
plt.close()
df.set_index('fruits',inplace = True)
df.plot.bar()
plt.savefig('/dbfs/myfolder/Graph1.png')
第 2 步:将文件从 Databricks 文件系统复制到 Azure Blob 存储。
有两种方法可以将文件从 DBFS 复制到 Azure Blob Stroage。
方法一:直接访问 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 将文件从 DBFS 复制到 Azure Blob 存储:
dbutils.fs.cp('dbfs:/myfolder/Graph1.png', 'wasbs://<Container>@<Storage Name>.blob.core.windows.net/Azure')
方法二:将 Azure Blob 存储容器挂载到 DBFS
您可以将 Blob 存储容器或容器内的文件夹装载到 Databricks 文件系统 (DBFS)。 mount 是一个指向 Blob 存储容器的指针,因此数据永远不会在本地同步。
dbutils.fs.mount(
source = "wasbs://sampledata@chepra.blob.core.windows.net/Azure",
mount_point = "/mnt/chepra",
extra_configs = {"fs.azure.sas.sampledata.chepra.blob.core.windows.net":dbutils.secrets.get(scope = "azurestorage", key = "azurestoragekey")})
使用 dbutils.fs.cp 将文件复制到 Azure Blob 存储容器:
dbutils.fs.cp('dbfs:/myfolder/Graph1.png', '/dbfs/mnt/chepra')
按照 Method1 或 Method2 可以成功将输出保存到 Azure Blob Storage。
更多详情请参考“Databricks - Azure Blob Storage”。
希望这会有所帮助。如果您有任何进一步的疑问,请告诉我们。