ODPS核心接口,odps核心
ODPS核心接口,odps核心
转载自:http://www.aiwanba.net/plugin/odps-doc/prddoc/odps_security/index.html
ODPS SDK介绍
ODPS,阿里云开放数据处理服务,是构建在飞天系统上的大规模分布式数据处理服务。以REST API的形式,支持用户提交类SQL的查询语句,对海量数据进行处理。在API之上,还提供SDK开发包和命令行工具,Aliyun.com上还有一个Web演示界面。
在本小节,我们仅会对较为常用的ODPS核心接口做简短介绍,更多详细信息请参阅SDK Java Doc。
AliyunAccount
阿里云认证账号。输入参数为accessId及accessKey,是阿里云用户的身份标识和认证密钥。此类用来初始化 Odps 。
Odps
ODPS SDK的入口,用户通过此类来获取项目空间下的所有对象集合,包括: Projects ,Tables ,Resources ,Functions ,Instances 。用户可以通过传入 AliyunAccount 实例来构造ODPS对象。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); odps.setDefaultProject("my_project"); for (Table t : odps.tables()) { .... }
Projects
ODPS中所有项目空间的集合。集合中的元素为 Project 。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); Project p = odps.projects().get("my_exists");
Project
对项目空间信息的描述,可以通过 Projects 获取相应的项目空间。
SQLTask
用于运行、处理SQL任务的接口。可以通过run接口直接运行SQL。run接口返回 Instance 实例,通过Instance获取SQL的运行状态及运行结果。程序示例如下,仅供参考:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); Instance instance = SQLTask.run(odps, "my_project", "select ..."); id = instance.getId(); Set<String> taskNames = instance.getTaskNames(); for (String name : taskNames) { TaskSummary summary = instance.getTaskSummary(name); String s = summary.getSummaryText(); } Map<String, String> results = instance.getTaskResults(); Map<String, TaskStatus> taskStatus = instance.getTaskStatus(); for (Entry<String, TaskStatus> status : taskStatus.entrySet()) { String result = results.get(status.getKey()); }
Note
如果用户想创建表,需要通过SQLTask接口,而不是 Table 接口。用户需要将 创建表(CREATE TABLE) 的语句传入SQLTask。
Instances
ODPS中所有实例(Instance)的集合。集合中的元素为 Instance 。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); odps.setDefaultProject("my_project"); for (Instance i : odps.instances()) { .... }
Instance
对实例信息的描述,可以通过 Instances 获取相应的实例。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); Instance ins = odps.instances().get("instance id");
Tables
ODPS中所有表的集合。集合中的元素为 Table 。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); odps.setDefaultProject("my_project"); for (Table t : odps.tables()) { .... }
Table
对表信息的描述,可以通过 Tables 获取相应的表。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); Table t = odps.tables().get("table name");
Resources
ODPS中所有资源的集合。集合中的元素为 Resource 。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); odps.setDefaultProject("my_project"); for (Resource r : odps.resources()) { .... }
Resource
对资源信息的描述,可以通过 Resources 获取相应的资源。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); Resource r = odps.resources().get("resource name");
一个创建文件资源的示例:
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
ODPS中所有函数的集合。集合中的元素为 Function 。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); odps.setDefaultProject("my_project"); for (Function f : odps.functions()) { .... }
Function
对函数信息的描述,可以通过 Functions 获取相应的函数。程序示例如下:
Account account = new AliyunAccount("my_access_id", "my_access_key"); Odps odps = new Odps(account); /* * odps服务内网地址:http://odps-ext.aliyun-inc.com/api * odps服务公网地址:http://service.odps.aliyun.com/api * 仅当用户处于阿里云内网环境时,才能使用odps服务内网地址 */ String odpsUrl = "<your odps endpoint>"; odps.setEndpoint(odpsUrl); Function f = odps.functions().get("function name");
一个创建函数的示例:
String resources = "xxx:xxx"; String classType = "com.aliyun.odps.mapred.open.example.WordCount"; ArrayList<String> resourceList = new ArrayList<String>(); 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);
评论暂时关闭