KYLIN 例行调度 自动BULID
KYLIN提供RESTFUL 接口,通过请求&crontab 可实现例行调度
参考url:
http://kylin.apache.org/docs15/howto/howto_use_restapi.html#get-job-status
实现步骤:
1、shell脚本加入下面代码实现BULID请求
java -jar KylinInterface.jar CUBE_NAME 20160806 20160807 BUILD
2、crontab 设置自动执行
以下为jar对应代码
package kylin;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.commons.codec.binary.Base64;
/*
* auth : lidan20
* email : 754768903@qq.com
* comp : baidu
* info : http://kylin.apache.org/docs15/howto/howto_use_restapi.html#get-job-status
* run : java -jar KylinInterface.jar CUBE_NAME 20160806 20160807 BUILD
*/
public class KylinCube {
public static void main(String[] args) {
String AUTH = "ADMIN:KYLIN";
String cubename = args[0] ; //参数一 cubename like "CUBE_DWD_PAY_USER_DETAIL_DF_DETAIL"
String starttime= getTime(args[1]); //参数二 starttime like "yyyyMMdd"
String endtime = getTime(args[2]); //参数三 endtime like "yyyyMMdd"
String oper = args[3]; //参数四 bulidtype like "BUILD|MERGE|REFRESH"
String PARAMS="{"startTime": "+starttime+","endTime": "+ endtime +","buildType": "" + oper +""}";
System.out.print(PARAMS);
String PATH = "http://ip:7070/kylin/api/cubes/"+cubename+"/rebuild";
//System.out.print(cubename+starttime+endtime+oper);
System.out.println(Put(AUTH,PATH,PARAMS));
}
public static String getTime(String strdate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
long unixtime=0;
try {
unixtime = sdf.parse(strdate).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return String.valueOf(unixtime);
}
public static String Put(String auth,String addr, String params) {
String result = "";
try {
URL url = new URL(addr);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestMethod("PUT");
connection.setDoOutput(true);
//String auth = ACCOUNT + ":" + PWD;
String code = new String(new Base64().encode(auth.getBytes()));
connection.setRequestProperty("Authorization", "Basic " + code);
connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
PrintWriter out = new PrintWriter(connection.getOutputStream());
out.write(params);
out.close();
BufferedReader in;
try {
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
} catch (FileNotFoundException exception) {
java.io.InputStream err = ((HttpURLConnection) connection).getErrorStream();
if (err == null)
throw exception;
in = new BufferedReader(new InputStreamReader(err));
}
StringBuffer response = new StringBuffer();
String line;
while ((line = in.readLine()) != null)
response.append(line + "
");
in.close();
result = response.toString();
} catch (MalformedURLException e) {
System.err.println(e.toString());
} catch (IOException e) {
System.err.println(e.toString());
}
return result;
}
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Kylin任务调度模块
- 下一篇: shell封装kylin调度
