可以提供MaxCompute的资源清理的接口么?比如Project的删除接口?
详细解答可以参考官方帮助文档
本文将为您介绍较为常用的 MaxCompute 核心接口,更多详情请参见 SDK Java Doc。
您可以通过 Maven 管理配置新 SDK 的版本。Maven 的配置信息如下(最新版本可以随时到
search.maven.org 搜索 odps-sdk-core 获取):
com.aliyun.odps
odps-sdk-core
0.26.2-public
MaxCompute 提供的 SDK 包整体信息,如下表所示:
包名
描述
odps-sdk-core
MaxCompute 的基础功能,例如:对表,Project 的操作,以及 Tunnel 均在此包中
odps-sdk-commons
一些 Util 封装
odps-sdk-udf
UDF 功能的主体接口
odps-sdk-mapred
MapReduce 功能
odps-sdk-graph
Graph Java SDK,搜索关键词“odps-sdk-graph”
AliyunAccount
阿里云认证账号。输入参数为 accessId 及 accessKey,是阿里云用户的身份标识和认证密钥。此类用来初始化 MaxCompute。
MaxCompute
MaxCompute SDK 的入口,您可通过此类来获取项目空间下的所有对象集合,包括:Projects,Tables,Resources,Functions,Instances。
说明
MaxCompute 原名 ODPS,因此在现有的 SDK 版本中,入口类仍命名为 ODPS。
您可以通过传入 AliyunAccount 实例来构造 MaxCompute 对象。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
odps.setDefaultProject('my_project');
for (Table t : odps.tables()) {
....
}
Projects
Projects 是 MaxCompute 中所有项目空间的集合。集合中的元素为 Project。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
Project p = odps.projects().get('my_exists');
p.reload();
Map properties = prj.getProperties();
...
Project
Project 是对项目空间信息的描述,可以通过 Projects 获取相应的项目空间。
SQLTask
SQLTask 是用于运行、处理 SQL 任务的接口。可以通过 run 接口直接运行 SQL。( 注意:每次只能提交运行一个SQL语句。)
run 接口返回 Instance 实例,通过 Instance 获取 SQL 的运行状态及运行结果。程序示例如下:
import java.util.List;
import com.aliyun.odps.Instance;
import com.aliyun.odps.Odps;
import com.aliyun.odps.OdpsException;
import com.aliyun.odps.account.Account;
import com.aliyun.odps.account.AliyunAccount;
import com.aliyun.odps.data.Record;
import com.aliyun.odps.task.SQLTask;
public class testSql {
private static final String accessId = '';
private static final String accessKey = '';
private static final String endPoint = 'http://service.odps.aliyun.com/api';
private static final String project = '';
private static final String sql = 'select category from iris;';
public static void
main(String[] args) {
Account account = new AliyunAccount(accessId, accessKey);
Odps odps = new Odps(account);
odps.setEndpoint(endPoint);
odps.setDefaultProject(project);
Instance i;
try {
i = SQLTask.run(odps, sql);
i.waitForSuccess();
List records = SQLTask.getResult(i);
for(Record r:records){
System.out.println(r.get(0).toString());
}
} catch (OdpsException e) {
e.printStackTrace();
}
}
}
说明
如果您想创建表,需要通过 SQLTask 接口,而不是 Table 接口。您需要将表操作的语句传入SQLTask。
Instances
Instances 是 MaxCompute 中所有实例(Instance)的集合,集合中的元素为 Instance。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
odps.setDefaultProject('my_project');
for (Instance i : odps.instances()) {
....
}
Instance
Instance 是对实例信息的描述,可以通过 Instances 获取相应的实例。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
Instance ins = odps.instances().get('instance id');
Date startTime = instance.getStartTime();
Date endTime = instance.getEndTime();
...
Status instanceStatus = instance.getStatus();
String instanceStatusStr = null;
if (instanceStatus == Status.TERMINATED) {
instanceStatusStr = TaskStatus.Status.SUCCESS.toString();
Map taskStatus = instance.getTaskStatus();
for (Entry status : taskStatus.entrySet()) {
if (status.getValue().getStatus() != TaskStatus.Status.SUCCESS) {
instanceStatusStr = status.getValue().getStatus().toString();
break;
}
}
} else {
instanceStatusStr = instanceStatus.toString();
}
...
TaskSummary summary = instance.getTaskSummary('instance name');
String s = summary.getSummaryText();
Tables
Tables 是 MaxCompute 中所有表的集合,集合中的元素为 Table。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
odps.setDefaultProject('my_project');
for (Table t : odps.tables()) {
....
}
Table
Table 是对表信息的描述,可以通过 Tables 获取相应的表。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
Table t = odps.tables().get('table name');
t.reload();
Partition part = t.getPartition(new PartitionSpec(tableSpec[1]));
part.reload();
...
Resources
Resources 是 MaxCompute 中所有资源的集合。集合中的元素为 Resource。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
odps.setDefaultProject('my_project');
for (Resource r : odps.resources()) {
....
}
Resource
Resource 是对资源信息的描述,可以通过 Resources 获取相应的资源。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
Resource r = odps.resources().get('resource name');
r.reload();
if (r.getType() == Resource.Type.TABLE) {
TableResource tr = new TableResource(r);
String tableSource = tr.getSourceTable().getProject() + '.'
+ tr.getSourceTable().getName();
if (tr.getSourceTablePartition() != null) {
tableSource += ' partition(' + tr.getSourceTablePartition().toString()
+ ')';
}
....
}
创建文件资源的示例,如下所示:
String projectName = 'my_porject';
String source = 'my_local_file.txt';
File file = new File(source);
InputStream is = new FileInputStream(file);
FileResource resource = new FileResource();
String name = file.getName();
resource.setName(name);
odps.resources().create(projectName, resource, is);
创建表资源的示例,如下所示:
TableResource resource = new TableResource(tableName, tablePrj, partitionSpec);
//resource.setName(INVALID_USER_TABLE);
resource.setName('table_resource_name');
odps.resources().update(projectName, resource);
Functions
Functions 是 MaxCompute 中所有函数的集合。集合中的元素为 Function。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
odps.setDefaultProject('my_project');
for (Function f : odps.functions()) {
....
}
Function
Function 是对函数信息的描述,可以通过 Functions 获取相应的函数。程序示例如下:
Account account = new AliyunAccount('my_access_id', 'my_access_key');
Odps odps = new Odps(account);
String odpsUrl = '';
odps.setEndpoint(odpsUrl);
Function f = odps.functions().get('function name');
List resources = f.getResources();
创建函数的示例,如下所示:
String resources = 'xxx:xxx';
String classType = 'com.aliyun.odps.mapred.open.example.WordCount';
ArrayList resourceList = new ArrayList();
for (String r : resources.split(':')) {
resourceList.add(r);
}
Function func = new Function();
func.setName(name);
func.setClassType(classType);
func.setResources(resourceList);
odps.functions().create(projectName, func);
赞0
踩1