External Volume操作

External Volume是MaxCompute提供的分布式文件系统和非结构化数据存储方案,通过External Volume可以实现使用MaxCompute引擎查询及处理OSS上的文件数据,而无需将数据导入到MaxCompute的表中,从而减少数据的冗余和传输开销。本文为您介绍常用的External Volume操作。

External Volume常用操作如下。

类型

功能

角色

操作入口

创建External Volume

在项目中创建External Volume。

  • External Volume所有者。

  • 项目所有者(Project Owner)。

  • 具备Super_Administrator或Admin角色的用户。

查看External Volume目录结构

查看目标External Volume的目录结构。

删除External Volume

删除目标External Volume。

前提条件

  • 已安装MaxCompute客户端且客户端需为v0.43.0及以上版本,详情请参见使用本地客户端(odpscmd)连接。您也可以使用DataWorks的数据开发或SQL查询功能运行命令,DataWorks的数据开发或SQL查询功能集成的MaxCompute版本需为v0.43.2及以上版本,您可以在DataWorks的数据开发或SQL查询功能中使用Show version;命令查看版本,详情请参见使用DataWorks连接

  • 通过SDK操作时,Java SDK版本需为v0.43.0及以上版本

  • 申请新功能测试。

    使用之前需提交表单申请在Project级别同时打开关于External Volume的执行开关,详情请参见新功能试用申请

  • 已授予访问OSS的权限。更多授权信息,请参见OSS的STS模式授权

创建External Volume

语法命令

vfs -create <volume_name>  
    -storage_provider <oss> 
    -url <oss://oss_endpoint/bucket/path>
    -acd <true|false>
    -role_arn <arn:aliyun:xxx/aliyunodpsdefaultrole> 

参数说明如下。

参数

是否必选

说明

volume_name

待创建的External Volume名称。

storage_provider

存储提供者,目前只支持OSS,即值只能为oss

url

数据文件所在OSS路径。格式为oss://<oss_endpoint>/<Bucket名称>/<OSS目录名称>

重要

目前暂不支持url指定的OSS路径只指定为OSS Bucket名称,需要有二级目录名称。

  • oss_endpoint:OSS访问域名信息。您需要使用OSS提供的内网域名,否则将产生OSS流量费用。例如oss://oss-cn-beijing-internal.aliyuncs.com/xxx。更多OSS内网域名信息,请参见访问域名和数据中心

    说明

    建议数据文件存放的OSS地域与MaxCompute项目所在地域保持一致。由于MaxCompute只在部分地域部署,跨地域的数据连通性可能存在问题。

  • Bucket名称:OSS存储空间名称,即Bucket名称。更多查看存储空间名称信息,请参见列举存储空间

  • OSS目录名称。目录后不需要指定文件名。

acd

Auto Create Directory,此参数控制如果目录不存在是否自动创建目录。

取值如下:

  • false(默认值):如果目录不存在则报错创建失败。

  • true:使用role_arn授权创建目录。

说明

当创建External Volume时候配置了acd参数,MaxCompute会先使用外部存储产品的授权创建目录,如果创建外部存储目录成功,无论External Volume是否创建成功,MaxCompute都不会删除已创建成功的外部存储目录;如果外部存储目录存在,当创建External Volume时,即使acd参数为true,也不会因为目录存在而冲突导致失败。

role_arn

指定RAM中Role(具有访问OSS权限)的ARN信息,获取ARN信息详情请参见使用STS临时访问凭证访问OSS

创建完成的External Volume在MaxCompute中的路径为:odps://[project_name]/[volume_name],其中project_name为MaxCompute项目名称;volume_name为External Volume名称。Spark引擎和MapReduce任务等都可以使用External Volume在MaxCompute中的路径。

使用示例

创建名称为test_ext_l的External Volume。

vfs -create test_ext_l -storage_provider oss -url oss://oss-cn-hangzhou-internal.aliyuncs.com/test/ex_volume/ -role_arn acs:ram::xxxxxxx:role/aliyunodpsdefaultrole;

查看External Volume列表、目录结构

语法命令

--查看External Volume列表
vfs -ls /;

--查看External Volume目录结构
vfs -ls [-R] /<volume_name>; 

参数说明如下。

参数

是否必选

说明

volume_name

待查看的External Volume名称。

使用示例

  • 查看External Volume列表。

    vfs -ls /;

    返回结果示例:

    > vfs -ls /;
    	Found 2 items
    	drwxrwxrwx - 0 2023-03-11 12:06 /test_ext_l -> oss://oss-cn-shanghai-internal.aliyuncs.com/test/ex_volume
    	drwxrwxrwx - 0 2023-03-21 07:33 /myfirst_volume4 -> oss://oss-cn-shanghai-internal.aliyuncs.com/paristech/data

    如果当前用户对某些External Volume没有权限,返回结果无法展示信息。例如当前用户是dev01,对myfirst_volume4没有权限,如需查询myfirst_volume4的信息需使用如下命令将myfirst_volume4的读(Read)权限赋给dev01。

    grant Read on volume myfirst_volume4 to RAM$xxxxxx:dev01;
    说明

    目前支持的授权操作有:Read、Write和CreateVolume。

  • 查看名称为test_ext_l的External Volume目录结构。

    vfs -ls -R /test_ext_l;

    返回结果示例:

    drwxrwxrwx - 0 2023-03-27 07:31 /test_ext_l/test -> oss://oss-cn-hangzhou-internal.aliyuncs.com/test/ex_volume/test

删除External Volume

语法命令

  • 命令1:

    vfs -rm -r /<volume_name> 
  • 命令2:

    vfs -rmv /<volume_name>

参数说明如下。

参数

是否必选

说明

volume_name

待删除的External Volume名称。

使用示例

删除名称为test_ext_l的External Volume。

vfs -rm -r /test_ext_l; 

相关文档