Databricks 和 Azure 文件

Databricks and Azure Files

我需要访问 Azure Files from Azure Databricks. According to the documentation Azure Blobs 受支持,但我需要此代码才能使用 Azure 文件:

dbutils.fs.mount(
  source = "wasbs://<your-container-name>@<your-storage-account-name>.file.core.windows.net",
  mount_point = "/mnt/<mount-name>",
  extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})

或者有其他方法可以 mount/access Azure Files to/from a Azure Databricks 集群吗?谢谢

在 Azure 上,通常您可以通过 SMB 协议将 Azure 文件的文件共享挂载到 Linux。我尝试按照官方教程 Use Azure Files with Linux 通过在 Python 中创建一个笔记本来执行以下命令,但失败了。

似乎Azure Databricks不允许这样做,即使我在Databricks社区中搜索了mount NFSSMBSamba等也没有任何讨论.

因此访问 Azure 文件中的文件的唯一方法是安装 azure-storage 包并直接在 Azure Databricks 上使用用于 Python 的 Azure 文件 SDK。

安装库:azure-storage-file-share https://pypi.org/project/azure-storage-file-share/

#上传到 Azure 文件共享

from azure.storage.fileshare import ShareFileClient
 
file_client = ShareFileClient.from_connection_string(conn_str="AZURE_STORAGE_CONNECTION_STRING", share_name="AZURE_STORAGE_FILE_SHARE_NAME", file_path="summary_uploaded.csv")
 
with open("/dbfs/tmp/summary_to_upload.csv", "rb") as source_file:
    file_client.upload_file(source_file)

#从 Azure 文件共享下载

file_client = ShareFileClient.from_connection_string(conn_str="AZURE_STORAGE_CONNECTION_STRING", share_name="AZURE_STORAGE_FILE_SHARE_NAME", file_path="summary_to_download.csv")
 
with open("/dbfs/tmp/summary_downloaded.csv", "wb") as file_handle:
    data = file_client.download_file()
    data.readinto(file_handle)

后续步骤:

  1. 在 Azure Key Vault 中定义一个新的密钥,用于保存“conn_str”的值 (AZURE_STORAGE_CONNECTION_STRING)。 密钥可以是:az-storage-conn-string
  2. 在 Azure Key Vault 中定义一个新的密钥,用于保存“share_name”的值 (AZURE_STORAGE_FILE_SHARE_NAME)。 关键:az-storage-file-share
  3. 从密钥库中读取这两个密钥并避免 hard-coding。