资源(Resource)是MaxCompute的特有概念,如果您想使用MaxCompute的自定义函数(UDF)或MapReduce功能,需要依赖资源来完成。本文为您介绍添加、查看、下载及删除资源等常用资源操作。
资源操作常用命令如下。
| 类型 | 功能 | 角色 | 工具执行平台 | 
| 添加资源至MaxCompute项目中。 | 具备更新资源权限(Write)的用户。 | ||
| 为资源创建别名。 | 具备更新资源权限(Write)的用户。 | ||
| 下载MaxCompute项目中的资源到本地。 | 具备更新资源权限(Write)的用户。 | ||
| 查看资源的详细信息。 | 具备读取资源权限(Read)的用户。 | ||
| 查看当前项目下所有的资源。 | 具备项目查看对象列表权限(List)的用户。 | ||
| 删除MaxCompute项目中已经存在的资源。 | 具备删除资源权限(Delete)的用户。 | 
添加资源
添加资源至MaxCompute项目中。
- 使用限制 - MaxCompute不支持添加外部表为资源。 
- 每个资源文件的大小不能超过2048 MB。单个SQL或MapReduce作业所引用的资源总大小不能超过2048 MB。 
 
- 命令格式 - add file <local_file> [as <alias>] [comment '<comment>'][-f]; add archive <local_file> [as <alias>] [comment '<comment>'][-f]; add table <table_name> [partition (<spec>)] [as <alias>] [comment '<comment>'][-f]; add py|jar <localfile> [comment '<comment>'][-f];
- 参数说明 - file|archive|table|py|jar:必填。资源类型。详情请参见资源。 
- local_file:必填。表示本地文件所在路径。并以文件名作为资源名,资源名是资源的唯一标识。 
- table_name:必填。表示MaxCompute中的表名。 
- spec:必填。当添加的资源为分区表时,MaxCompute仅支持将某个分区作为资源,不支持将整张分区表作为资源。 
- alias:可选。指定资源名,不加该参数时默认文件名为资源名。JAR及PYTHON类型资源不支持此参数。 
- comment:可选。为资源添加注释。 
- -f:可选。当存在同名的资源时,此操作会覆盖原有资源。如果不指定此选项,存在同名资源时,操作将失败。 
 
- 使用示例 - 示例1:添加一个FILE类型文件资源到MaxCompute。 - add file banking.txt;- 返回结果如下。 - OK: Resource 'banking.txt' have been created.
- 示例2:添加一个别名为sale.res的分区表资源到MaxCompute。 - add table sale_detail partition (ds='20150602') as sale.res comment 'sale detail on 20150602' -f;- 返回结果如下。 - OK: Resource 'sale.res' have been updated.
- 示例3:添加Python资源到MaxCompute。 - add py python.py [comment '<comment>'][-f];- 返回结果如下。 - OK: Resource 'python.py' have been created.
 
查看资源信息
查看当前项目下指定资源的信息,包含资源名、所有者、资源类型、资源大小、创建时间、上一次修改时间、资源文件的MD5值等信息。
- 命令格式 - desc resource <resource_name>;
- 参数说明 - resource_name:必填。已存在的资源名称。 
- 返回值说明 - Name:资源的名称。 
- Owner:资源所有者账号。 
- Type:资源类型。 
- Comment:资源注释信息。 
- CreatedTime:资源创建时间。 
- LastModifiedTime:资源最近一次的更新时间。 
- LastUpdator:执行最近一次更新操作的账号。 
- Size:资源文件大小,单位为MB。 
- Md5sum:资源文件的MD5值。 
 说明- MaxCompute的资源名大小写不敏感,resource_A和 resource_a指代同一资源。 
- 使用示例 - --查看资源topn_new.jar的信息。 desc resource topn_new.jar;- 返回结果如下。 - Name topn_new.jar Owner ALIYUN$****@test.aliyunid.com Type JAR Comment cloudopenapi CreatedTime 2020-12-29 13:55:11 LastModifiedTime 2020-12-29 13:55:11 LastUpdator Size 11438795 Md5sum 8bcf6aabf****56c0
查看资源列表
查看当前项目下所有的资源,包含资源名、所有者、创建时间、最近一次更新时间、资源类型等信息。
- 命令格式 - list resources;
- 使用示例 - list resources;- 返回结果如下。 - Resource Name Owner Creation Time Last Modified Time Type Last Updator Resource Size Source comment getaddr.jar ALIYUN$**** 2020-06-18 15:47:28 2020-06-18 15:47:28 jar 1353716 cloudopenapi ip.dat ALIYUN$**** 2020-06-18 15:49:46 2020-06-18 15:49:46 file 8525962 cloudopenapi 2 resources
为资源创建别名
为资源创建别名。alias命令可以在不修改代码的前提下,在MapReduce或自定义函数(UDF)代码中,通过某个固定的资源名读取不同资源(数据)。
- 命令格式 - alias <alias>=<real>;
- 参数说明 - alias:命名后的资源别名。 
- real:资源的原名。 
 
- 使用示例 - --新增资源res_20121208和res_20121209。 add table sale_detail partition (ds='20121208') as res_20121208; add table sale_detail partition (ds='20121209') as res_20121209; --命名资源res_20121208的别名为resName,并调用它。 alias resName=res_20121208; jar -resources resName -libjars work.jar -classpath ./work.jar com.company.MainClass args ...; --命名资源res_20121209的别名为resName,并调用它。 alias resName=res_20121209; jar -resources resName -libjars work.jar -classpath ./work.jar com.company.MainClass args ...;
上例中的资源别名resName在两个作业里引用了不同的资源表,您无需修改代码便可读取到不同的数据。
下载资源
下载MaxCompute项目中的资源到本地。资源类型必须为FILE、JAR、ARCHIVE或PY,不支持Table类型。
- 命令格式 - get resource <resource_name> <path>;
- 参数说明 - resource_name:必填。要下载的资源名称。 
- path:必填。资源保存到本地的路径。 
 
- 使用示例 - get resource getaddr.jar D:\;
删除资源
删除MaxCompute项目中已经存在的资源。
- 命令格式 - drop resource <resource_name>;
- 参数说明 - resource_name:待删除资源的名称。 
- 使用示例 - drop resource getaddr.jar;- 返回结果如下。 - Confirm to "drop resource getaddr.jar" (yes/no)? y OK