您的位置:首页 > 其它

关于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的交流, 以此成功告一段落。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  odps