閱讀860 返回首頁    go 財經資訊


代碼示例__SDK參考手冊_數據集成-阿裏雲

以一個用戶利用CDP Java SDK完成創建Pipeline、提交Job、最後將其Kill為例,展示SDK詳情(該Demo在CDP JAVA SDK中也有附帶)

package com.alibaba.cdp.sdk.example;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.alibaba.cdp.sdk.model.Job;
import com.alibaba.cdp.sdk.model.JobStatus;
import com.alibaba.cdp.sdk.model.Pipeline;
import com.alibaba.cdp.sdk.model.Session;
/**
 * 樣例編碼,注意這個樣例由於缺乏關鍵的作業信息實際不能運行!
 * 但是它能很好體現如何使用CDP SDK完成我們所需要的業務邏輯
 * */
public class JobExample {
    public static void main(String[] args) {
        // 登錄
        Session session = new Session("https://cdp.aliyun.com/api",
                "your_accessId", "your_accessKey");
        // 如果沒有project則創建
        Pipeline pipeline = new Pipeline();
        pipeline.setName("your_project_name");
        pipeline.setDescription("your_project_info");
        pipeline = session.createPipeline(pipeline);
        // 如果已有project,直接使用即可
//        Project project = session.getPipeline("your_project_name");
        // 提交Job
        Job job = new Job();
        job.setTraceId("your job trace info"); // 自定義用以追蹤作業的信息
        job.setContext("your_job_json"); // 詳情參看不同的同步方式配置信息
        final Job starter = pipeline.start(job);
        // 啟動另外一個線程輪詢打印狀態
        ExecutorService service = Executors.newSingleThreadExecutor();
        service.execute(new Runnable() {
            @Override
            public void run() {
                JobStatus status;
                do {
                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    status = starter.status();
                    System.out.println(status);
                } while (status.isJobAlive());
            }
        });
        service.shutdown();
        // 等待job運行完成
        try {
            Thread.sleep(60000);
        } catch (InterruptedException e1) {
            e1.printStackTrace();
        }
        // 如果沒有完成,主線程Kill這個運行實例
        do {
            try {
                starter.stop();
                Thread.sleep(3000);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } while (starter.status().isJobAlive());
    }
}

最後更新:2016-11-24 11:23:47

  上一篇:go 設計原則__SDK參考手冊_數據集成-阿裏雲
  下一篇:go 異常和錯誤__SDK參考手冊_數據集成-阿裏雲