使用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存儲

使用共享訪問簽名(SAS)設置Azure Blob Storage憑據

您可以使用SAS令牌配置對在特定時間過期的存儲帳戶中的單個容器的有限訪問。

火花相依“fs.azure.sas。<容器名稱>。< storage-account-name > .blob.core.windows.net”“< sas-token-for-container >”

使用DataFrame API訪問Azure Blob Storage

Apache Spark DataFrame API可以使用在筆記本或集群級別配置的憑據。所有WASB驅動程序uri都指定容器和存儲帳戶名。目錄名是可選的,可以指定相對於容器的多個嵌套目錄。

wasbs//<容器-的名字> @ <存儲-賬戶-的名字>。核心窗戶/<目錄-的名字>

下麵的代碼示例說明如何使用DataFrames API和磚公用事業與容器內的命名目錄交互。

df火花格式“鋪”負載“wasbs: / / <容器名稱> @ < storage-account-name > .blob.core.windows.net/ <目錄名稱>”dbutilsfsls“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存儲

  1. 要掛載Blob存儲容器或容器內的文件夾,使用以下命令:

    dbutilsfs“wasbs: / / <容器名稱> @ < storage-account-name > .blob.core.windows.net”mount_point“/ mnt / < mount-name >”extra_configs“< conf-key >”dbutils秘密得到範圍“< scope-name >”關鍵“<鍵名>”)})
    dbutilsfs“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.netfs.azure.sas。<容器名稱>。< storage-account-name > .blob.core.windows.net

    • dbutils.secrets.get(範圍“< scope-name >”,關鍵“<鍵名>”)獲取已存儲為秘密在一個秘密的範圍

  2. 像訪問本地文件一樣訪問容器中的文件,例如:

    # pythondf火花格式“文本”負載“/ mnt / < mount-name > /……”df火花格式“文本”負載“dbfs: / < mount-name > /……”
    / / scala瓦爾df火花格式“文本”).負載“/ mnt / < mount-name > /……”瓦爾df火花格式“文本”).負載“dbfs: / < mount-name > /……”
    ——SQL創建數據庫<db-的名字>位置“/ mnt / < mount-name >”