如何在Azure ML Studio中挂载数据湖存储以避免重复复制数据
Azure数据湖目录直接挂载方案(无需重复复制数据)
场景1:Azure ML计算实例内直接挂载数据集
你当前使用的download方法会全量拉取数据到本地磁盘,替换为Azure ML内置的mount方法即可实现数据湖目录直接挂载,无需拷贝:
- 挂载示例代码如下:
from azureml.core import Workspace, Dataset import os subscription_id = 'xxx' resource_group = 'luisdatapipelinetest' workspace_name = 'ml-pipelines' workspace = Workspace(subscription_id, resource_group, workspace_name) dataset = Dataset.get_by_name(workspace, name='files_test') # 自定义挂载点路径 mount_path = "/mnt/adls_test" os.makedirs(mount_path, exist_ok=True) # 方式1:with块内挂载有效,退出自动卸载 with dataset.mount(mount_point=mount_path) as mount: # 直接读取挂载路径下的文件,数据实时从数据湖读取 print(os.listdir(mount_path)) # 所有业务逻辑放在该代码块内即可 # 方式2:手动控制挂载生命周期,notebook关闭前持续有效 # mount = dataset.mount(mount_point=mount_path) # mount.start() # 业务逻辑执行完成后手动卸载 # mount.stop()
场景2:独立Azure虚拟机持久挂载数据湖
如果是脱离Azure ML的普通Azure VM,可以用blobfuse2工具实现ADLS Gen2的持久挂载,步骤如下:
- 安装blobfuse2(以Ubuntu 20.04为例,其他发行版对应调整安装命令)
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt update && sudo apt install -y blobfuse2
- 创建挂载配置文件
adls_config.yaml,填写你的存储账号信息:
azstorage: account-name: 你的ADLS存储账号名称 account-key: 你的存储账号访问密钥 # 国际版Azure endpoint后缀为core.windows.net endpoint: https://<存储账号名>.dfs.core.chinacloudapi.cn container: 数据湖对应的容器名称 type: adls
- 执行挂载:
# 创建挂载目录 sudo mkdir -p /mnt/adls_data # 执行挂载 sudo blobfuse2 mount /mnt/adls_data --config-file=./adls_config.yaml
- 如需开机自动挂载,将挂载规则写入
/etc/fstab即可,重启后挂载不会失效。
注意:同区域的虚拟机访问同区域存储账号时,挂载目录的读写性能接近本地磁盘,远高于跨区域拷贝数据的效率
内容的提问来源于stack exchange,提问作者Luis Ramon Ramirez Rodriguez
相关产品推荐
相关产品推荐

