使用WASB連接到Azure Blob存儲(遺留)
微軟已經棄用Windows Azure存儲團驅動程序(WASB)Azure Blob存儲支持Azure Blob文件係統驅動(ABFS);看到訪問Azure數據湖存儲Gen2和Blob存儲.ABFS比WASB有許多好處;看到關於ABFS的Azure文檔.
本文提供了維護使用WASB驅動程序的代碼的文檔。Databricks建議所有連接到Azure Blob Storage的連接都使用ABFS。
在“數據庫”中配置WASB憑證
WASB驅動程序允許您使用存儲帳戶接入密鑰或者一個共享訪問簽名(SAS).(如果從公共存儲帳戶讀取數據,則不需要配置憑據)。
Databricks推薦使用秘密每當您需要在Databricks中傳遞憑據時。秘密對所有訪問包含的用戶都是可用的秘密的範圍.
你可以傳遞憑證:
作用域為Spark配置中的集群
範圍到筆記本
附加到掛載的目錄
Databricks建議您將所有連接升級到使用ABFS訪問Azure Blob Storage,它提供與WASB類似的訪問模式。在與Azure Blob Storage交互時,使用ABFS獲得最佳的安全性和性能。
要配置集群憑據,請設置火花配置屬性。在集群級別設置的憑據可用於訪問該集群的所有用戶。
要配置筆記本範圍的憑據,請使用spark.conf.set ()
.在筆記本級別傳遞的憑據可用於訪問該筆記本的所有用戶。
使用存儲帳戶訪問密鑰設置Azure Blob Storage憑據
存儲帳戶訪問鍵授予對存儲帳戶內所有容器的完全訪問權。雖然這種模式對於原型設計很有用,但是要避免在生產中使用它,以減少授予對生產數據無限製訪問的相關風險。
火花.相依(“fs.azure.account.key。< storage-account-name > .blob.core.windows.net”,“< storage-account-access-key >”)
您可以升級帳戶密鑰uri以使用ABFS。有關更多信息,請參見使用帳戶密鑰訪問Azure數據湖存儲Gen2或Blob存儲.
使用DataFrame API訪問Azure Blob Storage
Apache Spark DataFrame API可以使用在筆記本或集群級別配置的憑據。所有WASB驅動程序uri都指定容器和存儲帳戶名。目錄名是可選的,可以指定相對於容器的多個嵌套目錄。
wasbs://<容器-的名字> @ <存儲-賬戶-的名字>。團.核心.窗戶.網/<目錄-的名字>
下麵的代碼示例說明如何使用DataFrames API和磚公用事業與容器內的命名目錄交互。
df=火花.讀.格式(“鋪”).負載(“wasbs: / / <容器名稱> @ < storage-account-name > .blob.core.windows.net/ <目錄名稱>”)dbutils.fs.ls(“wasbs: / / <容器名稱> @ < storage-account-name > .blob.core.windows.net/ <目錄名稱>”)
要更新ABFS而不是WASB,請更新uri。有關更多信息,請參見使用Blob存儲或Azure數據湖存儲Gen2的ABFS URI直接訪問
使用SQL訪問Azure Blob Storage
運行Spark SQL的筆記本無法訪問在筆記本會話配置中設置的憑據。
在您的集群配置中設置帳戶訪問密鑰或SAS後,您可以使用標準的Spark SQL查詢與Azure Blob Storage:
——SQL創建數據庫<db-的名字>位置“wasbs: / / <容器名稱> @ < storage-account-name > .blob.core.windows.net/”;
要更新ABFS而不是WASB,請更新您的uri;看到使用Blob存儲或Azure數據湖存儲Gen2的ABFS URI直接訪問
將Azure Blob存儲容器掛載到DBFS
您可以將Azure Blob Storage容器或容器內的文件夾掛載到DBFS。有關Databricks的建議,請參見通過Databricks掛載雲對象存儲.
重要的
Azure Blob存儲支持三種blob類型:塊、追加和頁。隻能掛載塊blobs到DBFS。
所有用戶都對掛載到DBFS的Blob存儲容器中的對象具有讀寫訪問權限。
通過集群創建掛載點後,該集群的用戶可以立即訪問該掛載點。要在另一個正在運行的集群中使用掛載點,必須運行
dbutils.fs.refreshMounts ()
以使新創建的掛載點可用。
DBFS使用您在創建掛載點時提供的憑據來訪問掛載的Blob存儲容器。如果Blob存儲容器使用存儲帳戶訪問密鑰掛載,DBFS在訪問該掛載點時使用從存儲帳戶密鑰派生的臨時SAS令牌。
裝入Azure Blob存儲容器
Databricks建議使用ABFS而不是WASB。有關使用ABFS掛載的更多信息,請參見:用ABFS掛載ADLS Gen2或Blob存儲.
要掛載Blob存儲容器或容器內的文件夾,使用以下命令:
dbutils.fs.山(源=“wasbs: / / <容器名稱> @ < storage-account-name > .blob.core.windows.net”,mount_point=“/ mnt / < mount-name >”,extra_configs={“< conf-key >”:dbutils.秘密.得到(範圍=“< scope-name >”,關鍵=“<鍵名>”)})
dbutils.fs.山(源=“wasbs: / / <容器名稱> @ < storage-account-name > .blob.core.windows.net/ <目錄名稱>”,掛載點=“/ mnt / < mount-name >”,extraConfigs=地圖(“< conf-key >”->dbutils.秘密.得到(範圍=“< scope-name >”,關鍵=“<鍵名>”)))
在哪裏
< storage-account-name >
是您的Azure Blob存儲帳戶的名稱。<容器名稱>
是Azure Blob存儲帳戶中的一個容器的名稱。< mount-name >
是一個DBFS路徑,表示Blob存儲容器或容器內的文件夾(在源
)將掛載在DBFS中。< conf-key >
兩者都可以fs.azure.account.key。< storage-account-name > .blob.core.windows.net
或fs.azure.sas。<容器名稱>。< storage-account-name > .blob.core.windows.net
dbutils.secrets.get(範圍=“< scope-name >”,關鍵=“<鍵名>”)
獲取已存儲為秘密在一個秘密的範圍.
像訪問本地文件一樣訪問容器中的文件,例如:
# pythondf=火花.讀.格式(“文本”).負載(“/ mnt / < mount-name > /……”)df=火花.讀.格式(“文本”).負載(“dbfs: / < mount-name > /……”)
/ / scala瓦爾df=火花.讀.格式(“文本”).負載(“/ mnt / < mount-name > /……”)瓦爾df=火花.讀.格式(“文本”).負載(“dbfs: / < mount-name > /……”)
——SQL創建數據庫<db-的名字>位置“/ mnt / < mount-name >”