关于odps的sdk怎么实现
2015-06-18 17:43
330 查看
因为odps的sdk只有jdk, 也就是你必须要懂java才能在应用里使用odps,
要是用这样一个架构, 必需要有 apache-tomcat的支持, 下载地址 。
然后就是熟悉一下这个apache-tomcat的文件结构
我在这里不多说废话了, 因为说多了会有失误, 开启apache-tomcat服务十分简单, *inx用户可以执行bin里面的 startup.sh, windows用户可以执行bin里面的 startup.bat, 我们的java项目要放在webapps目这个录里面, 放的时候以目录的形式存储, 目录名就是我们的项目名。
docs, examples, host-manager, manager, ROOT 这些都是系统默认生成的目录, 我们新建的目录是 myodps,
这些初始的目录分别对应 localhost:8080/examples --- examples , localhost:8080 ----- ROOT , 所以我们建的目录对应的url是 localhost:8080/myodps
TOMCAT经过分析url后会按优先级render myodps目录里面的index.html, index.htm, index.jsp。所有前台用到的资源都放到这个目录上, 然后java后台程序放到WEB-INF里面的class目录里面(没有的话就自己创建一个)至此我们的配置告一段落了, 接下来就是写java程序来获取odps的数据。odps在用户手册上提供了怎么设置参数来达到预期的结果。 但是设置参数那一块和sql请求的那一块分别写在了不同的文档里面,略坑。
然后修改 WEB-INF里面的web.xml文件, servlet-name 可以随便填, 但是这个servlet是起着链接后台的class函数和前台的url的作用, 所以上下两个对应的servlet-name一定要一致!
因为不知道到底要引用哪个文件, 所以我把从官网下下来的所有 .jar文件都解压到classes目录里面, 引用了所有的包
import com.aliyun.odps.*;
import com.aliyun.odps.account.*;
import com.aliyun.odps.commons.transport.*;
import com.aliyun.odps.commons.util.*;
import com.aliyun.odps.counter.*;
import com.aliyun.odps.data.*;
import com.aliyun.odps.io.*;
import com.aliyun.odps.rest.*;
import com.aliyun.odps.security.*;
import com.aliyun.odps.task.*;
import com.aliyun.odps.task.copy.*;
import com.aliyun.odps.tunnel.*;
import com.aliyun.odps.tunnel.io.*;
import com.aliyun.odps.udf.*;
import com.aliyun.odps.udf.annotation.*;
import com.aliyun.odps.udf.impl.*;
import com.aliyun.odps.udf.utils.*;
import com.aliyun.odps.utils.*;
import com.aliyun.odps.volume.*;
import java.util.*;
import java.util.Map.Entry;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Myodps {
private Account account;
private Odps odps;
private ObjectOutputStream oos;
private FileOutputStream fos;
private FileWriter writer;
private FileReader reader;
public Myodps () {
account = new AliyunAccount("YourID",
"YourKeys");
odps = new Odps(account);
String odpsUrl = "http://service.odps.aliyun.com/api";
odps.setEndpoint(odpsUrl);
odps.setDefaultProject("bigdata_final");
}
public String sendsql(String sql) {
String result = "";
try {
Instance instance = SQLTask.run(odps, sql);
String id = instance.getId();
instance.waitForSuccess();
Set<String> taskNames = instance.getTaskNames();
for (String na
958b
me : taskNames) {
Map<String, String> results = instance.getTaskResults();
result = results.get(name);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
之后就是调用 sendsql进行和odps的交流, 以此成功告一段落。
要是用这样一个架构, 必需要有 apache-tomcat的支持, 下载地址 。
然后就是熟悉一下这个apache-tomcat的文件结构
我在这里不多说废话了, 因为说多了会有失误, 开启apache-tomcat服务十分简单, *inx用户可以执行bin里面的 startup.sh, windows用户可以执行bin里面的 startup.bat, 我们的java项目要放在webapps目这个录里面, 放的时候以目录的形式存储, 目录名就是我们的项目名。
docs, examples, host-manager, manager, ROOT 这些都是系统默认生成的目录, 我们新建的目录是 myodps,
这些初始的目录分别对应 localhost:8080/examples --- examples , localhost:8080 ----- ROOT , 所以我们建的目录对应的url是 localhost:8080/myodps
TOMCAT经过分析url后会按优先级render myodps目录里面的index.html, index.htm, index.jsp。所有前台用到的资源都放到这个目录上, 然后java后台程序放到WEB-INF里面的class目录里面(没有的话就自己创建一个)至此我们的配置告一段落了, 接下来就是写java程序来获取odps的数据。odps在用户手册上提供了怎么设置参数来达到预期的结果。 但是设置参数那一块和sql请求的那一块分别写在了不同的文档里面,略坑。
然后修改 WEB-INF里面的web.xml文件, servlet-name 可以随便填, 但是这个servlet是起着链接后台的class函数和前台的url的作用, 所以上下两个对应的servlet-name一定要一致!
因为不知道到底要引用哪个文件, 所以我把从官网下下来的所有 .jar文件都解压到classes目录里面, 引用了所有的包
import com.aliyun.odps.*;
import com.aliyun.odps.account.*;
import com.aliyun.odps.commons.transport.*;
import com.aliyun.odps.commons.util.*;
import com.aliyun.odps.counter.*;
import com.aliyun.odps.data.*;
import com.aliyun.odps.io.*;
import com.aliyun.odps.rest.*;
import com.aliyun.odps.security.*;
import com.aliyun.odps.task.*;
import com.aliyun.odps.task.copy.*;
import com.aliyun.odps.tunnel.*;
import com.aliyun.odps.tunnel.io.*;
import com.aliyun.odps.udf.*;
import com.aliyun.odps.udf.annotation.*;
import com.aliyun.odps.udf.impl.*;
import com.aliyun.odps.udf.utils.*;
import com.aliyun.odps.utils.*;
import com.aliyun.odps.volume.*;
import java.util.*;
import java.util.Map.Entry;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Myodps {
private Account account;
private Odps odps;
private ObjectOutputStream oos;
private FileOutputStream fos;
private FileWriter writer;
private FileReader reader;
public Myodps () {
account = new AliyunAccount("YourID",
"YourKeys");
odps = new Odps(account);
String odpsUrl = "http://service.odps.aliyun.com/api";
odps.setEndpoint(odpsUrl);
odps.setDefaultProject("bigdata_final");
}
public String sendsql(String sql) {
String result = "";
try {
Instance instance = SQLTask.run(odps, sql);
String id = instance.getId();
instance.waitForSuccess();
Set<String> taskNames = instance.getTaskNames();
for (String na
958b
me : taskNames) {
Map<String, String> results = instance.getTaskResults();
result = results.get(name);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
之后就是调用 sendsql进行和odps的交流, 以此成功告一段落。
相关文章推荐
- 阿里ODPS降低大数据应用门槛
- MaxCompute基础与MaxCompute_SQL优化
- 原来MaxCompute还能这么玩系列(3)—— 借力QlikView玩转数据分析
- 基于MaxCompute的图计算实践分享-常见问题解决及优化指南
- 定位排查工作流的计算结果数据量不符合预期的方法
- 基于MaxCompute的图计算实践分享-Resolver简介
- 5分钟学会使用DataHub接入实时数据到MaxCompute(原ODPS)
- MaxCompute(原ODPS) MapReduce常见问题解答
- MaxCompute计算长尾问题
- 基于Quick BI的用户分布分析
- 如何用SQL对MaxCompute数据进行修改和删除
- 导出SQL运行结果的方法总结
- 基于大数据开发套件定时调度带资源文件的MapReduce作业
- MaxCompute SQL与标准SQL的主要区别及解决方法
- 阿里云数加助力东润环能开启新能源大数据时代
- [大数据新手上路]“零基础”系列课程--如何将ECS上的Hadoop数据迁移到阿里云数加·MaxCompute
- 【大数据技巧】数据导入到MaxCompute的技巧汇总
- 大数据简析“林丹出轨事件”背后的微博信息传播
- 【大数据技巧】MaxCompute优化去重计算的性能
- MaxCompute(原ODPS) 脑图 - 常用知识总结