External Volume是MaxCompute提供的分布式文件系统和非结构化数据存储方案,通过External Volume可以实现使用MaxCompute引擎查询及处理OSS上的文件数据,而无需将数据导入到MaxCompute的表中,从而减少数据的冗余和传输开销。本文为您介绍常用的External Volume操作。
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,即值只能为 |
url | 是 | 数据文件所在OSS路径。格式为 重要 目前暂不支持 |
acd | 否 | Auto Create Directory,此参数控制如果目录不存在是否自动创建目录。 取值如下:
说明 当创建External Volume时候配置了 |
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;
相关文档
通过SDK操作External Volume请参见External Volume SDK说明。
MaxCompute可通过创建External Volume去挂载OSS的一个路径,利用MaxCompute权限管理系统对用户访问External Volume做细粒度的权限控制,同时利用MaxCompute引擎处理External Volume内部的文件数据。具体示例请参见利用MaxCompute External Volume处理非结构化数据。