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 NFS
、SMB
、Samba
等也没有任何讨论.
因此访问 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)
后续步骤:
- 在 Azure Key Vault 中定义一个新的密钥,用于保存“conn_str”的值 (AZURE_STORAGE_CONNECTION_STRING)。
密钥可以是:az-storage-conn-string
- 在 Azure Key Vault 中定义一个新的密钥,用于保存“share_name”的值 (AZURE_STORAGE_FILE_SHARE_NAME)。
关键:az-storage-file-share
- 从密钥库中读取这两个密钥并避免 hard-coding。
我需要访问 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 NFS
、SMB
、Samba
等也没有任何讨论.
因此访问 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)
后续步骤:
- 在 Azure Key Vault 中定义一个新的密钥,用于保存“conn_str”的值 (AZURE_STORAGE_CONNECTION_STRING)。 密钥可以是:az-storage-conn-string
- 在 Azure Key Vault 中定义一个新的密钥,用于保存“share_name”的值 (AZURE_STORAGE_FILE_SHARE_NAME)。 关键:az-storage-file-share
- 从密钥库中读取这两个密钥并避免 hard-coding。