KYLIN 예행 스케줄 링 자동 BULID
url:
http://kylin.apache.org/docs15/howto/howto_use_restapi.html#get-job-status
실현 절차:
1. 셸 스 크 립 트 는 아래 코드 를 추가 하여 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 : [email protected]
* 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;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.