跳到主要内容

Resources

Resources 类用于管理 MaxCompute 项目中的资源文件。资源文件是 UDF 函数执行时依赖的文件,包括 JAR 包、Python 脚本、数据文件等。

获取实例

Resources resources = odps.resources();

资源类型

说明
FileResource文件资源(JAR、PY、文本等)
TableResource表资源
VolumeResource卷资源

方法

create

创建资源。

// 创建文件资源
public void create(Resource resource, InputStream inputStream) throws OdpsException
public void create(String projectName, Resource resource, InputStream inputStream) throws OdpsException
public void create(String projectName, String schemaName, Resource resource, InputStream inputStream) throws OdpsException

// 创建表资源/卷资源(无需 InputStream)
public void create(Resource resource) throws OdpsException
public void create(String projectName, Resource resource) throws OdpsException
public void create(String projectName, String schemaName, Resource resource) throws OdpsException

参数

参数类型说明
resourceResource资源对象(FileResource / TableResource / VolumeResource)
inputStreamInputStream文件资源的数据流
projectNameString目标项目名称(可选)
schemaNameString目标 Schema 名称(可选)

示例

FileResource resource = new FileResource();
resource.setName("my_udf.jar");
InputStream is = new FileInputStream("path/to/my_udf.jar");
resources.create(resource, is);

get

获取资源对象。

public Resource get(String resourceName)
public Resource get(String projectName, String resourceName)
public Resource get(String projectName, String schemaName, String resourceName)

返回值Resource 对象


getResourceAsStream

获取资源文件的输入流。

public InputStream getResourceAsStream(String resourceName) throws OdpsException
public InputStream getResourceAsStream(String projectName, String resourceName) throws OdpsException
public InputStream getResourceAsStream(String projectName, String schemaName, String resourceName) throws OdpsException

返回值InputStream,资源文件的数据流


exists

检查资源是否存在。

public boolean exists(String resourceName) throws OdpsException
public boolean exists(String projectName, String resourceName) throws OdpsException
public boolean exists(String projectName, String schemaName, String resourceName) throws OdpsException

返回值:存在返回 true


update

更新资源。

// 更新文件资源
public void update(Resource resource, InputStream inputStream) throws OdpsException
public void update(String projectName, Resource resource, InputStream inputStream) throws OdpsException
public void update(String projectName, String schemaName, Resource resource, InputStream inputStream) throws OdpsException

// 更新表资源/卷资源
public void update(Resource resource) throws OdpsException
public void update(String projectName, Resource resource) throws OdpsException
public void update(String projectName, String schemaName, Resource resource) throws OdpsException

delete

删除资源。

public void delete(String resourceName) throws OdpsException
public void delete(String projectName, String resourceName) throws OdpsException
public void delete(String projectName, String schemaName, String resourceName) throws OdpsException

iterator

获取资源迭代器。

public Iterator<Resource> iterator()
public Iterator<Resource> iterator(String projectName)
public Iterator<Resource> iterator(String projectName, String schemaName)

iterable

获取资源 Iterable(支持 foreach 语法)。

public Iterable<Resource> iterable()
public Iterable<Resource> iterable(String projectName)
public Iterable<Resource> iterable(String projectName, String schemaName)

createTempResource

创建临时资源文件。

public FileResource createTempResource(String fileName) throws OdpsException
public FileResource createTempResource(String projectName, String fileName) throws OdpsException
public FileResource createTempResource(String projectName, String filePath, Type type) throws OdpsException

参数

参数类型说明
fileNameString临时资源文件名
projectNameString目标项目名称(可选)
filePathString资源文件路径
typeType资源类型(FILE、JAR、PY、ARCHIVE 等)

返回值FileResource,创建的临时资源对象


Resource 对象属性

方法返回类型说明
getName()String资源名称
getType()Resource.Type资源类型(FILE、JAR、PY、ARCHIVE、TABLE、VOLUMEFILE)
getOwner()String资源所有者
getCreatedTime()Date创建时间
getLastModifiedTime()Date最后修改时间
getSize()long资源大小(字节)

使用示例

Resources resources = odps.resources();

// 创建 JAR 资源
FileResource jar = new FileResource();
jar.setName("my_lib.jar");
resources.create(jar, new FileInputStream("my_lib.jar"));

// 创建表资源
TableResource tableRes = new TableResource();
tableRes.setName("my_table_res");
tableRes.setProject("my_project");
tableRes.setTable("source_table");
resources.create(tableRes);

// 遍历所有资源
for (Resource r : resources.iterable()) {
System.out.println(r.getName() + " [" + r.getType() + "]");
}

// 删除资源
resources.delete("my_lib.jar");