首页 > 代码库 > Kylin Java RESTful API
Kylin Java RESTful API
转:http://www.cnblogs.com/dreamfactory/p/5588203.html
最近在做大数据方面的开发, 学习研究了一段时间的kylin系统, 对于前端开发需要使用 RESTful API ,但是官网并没有提供详细的Java API. 经过几天的看文档,最终写出了 Java 的API,不敢私藏,特分享与大家.
1 import java.io.BufferedReader; 2 import java.io.InputStream; 3 import java.io.InputStreamReader; 4 import java.io.OutputStream; 5 import java.net.HttpURLConnection; 6 import java.net.URL; 7 8 import org.apache.commons.codec.binary.Base64; 9 10 11 12 /** 13 * 14 * @author HennSun 15 * www.shareideas.net 16 * @Reference 17 * http://kylin.apache.org/docs15/howto/howto_use_restapi.html#authentication 18 * 19 */ 20 public class KylinHttpBasic { 21 22 private static String encoding; 23 private static final String baseURL = "http://10.1.50.123:7070/kylin/api"; 24 public static String login(String user,String passwd){ 25 String method = "POST"; 26 String para = "/user/authentication"; 27 byte[] key = (user+":"+passwd).getBytes(); 28 encoding = Base64.encodeBase64String(key); 29 return excute(para,method,null); 30 } 31 32 33 public static String listQueryableTables(String projectName){ 34 35 String method = "GET"; 36 String para = "/tables_and_columns?project="+projectName; 37 38 return excute(para,method,null); 39 40 } 41 42 43 /** 44 * 45 * @param offset required int Offset used by pagination 46 * @param limit required int Cubes per page. 47 * @param cubeName optional string Keyword for cube names. To find cubes whose name contains this keyword. 48 * @param projectName optional string Project name. 49 * @return 50 */ 51 public static String listCubes(int offset, 52 int limit, 53 String cubeName, 54 String projectName ){ 55 String method = "GET"; 56 String para = "/cubes?offset="+offset 57 +"&limit="+limit 58 +"&cubeName="+cubeName 59 +"&projectName="+projectName; 60 return excute(para,method,null); 61 } 62 63 /** 64 * 65 * @param cubeName Cube name. 66 * @return 67 */ 68 public static String getCubeDes(String cubeName){ 69 String method = "GET"; 70 String para = "/cube_desc/"+cubeName; 71 return excute(para,method,null); 72 73 } 74 75 76 /** 77 * 78 * @param cubeName 79 * @return 80 */ 81 public static String getCube(String cubeName){ 82 String method = "GET"; 83 String para = "/cubes/"+cubeName; 84 return excute(para,method,null); 85 86 } 87 88 89 90 /** 91 * 92 * @param modelName Data model name, by default it should be the same with cube name. 93 * @return 94 */ 95 public static String getDataModel(String modelName){ 96 String method = "GET"; 97 String para = "/model/"+modelName; 98 return excute(para,method,null); 99 100 }101 102 /**103 * 104 * @param cubeName cubeName Cube name.105 * @return106 */107 public static String enableCube(String cubeName){108 109 String method = "PUT";110 String para = "/cubes/"+cubeName+"/enable";111 return excute(para,method,null); 112 113 }114 115 /**116 * 117 * @param cubeName Cube name.118 * @return119 */120 public static String disableCube(String cubeName){121 122 String method = "PUT";123 String para = "/cubes/"+cubeName+"/disable";124 return excute(para,method,null); 125 126 }127 128 /**129 * 130 * @param cubeName Cube name.131 * @return132 */133 public static String purgeCube(String cubeName){134 135 String method = "PUT";136 String para = "/cubes/"+cubeName+"/purge";137 return excute(para,method,null); 138 139 }140 141 142 /**143 * 144 * @param jobId Job id145 * @return146 */147 public static String resumeJob(String jobId){148 149 String method = "PUT";150 String para = "/jobs/"+jobId+"/resume";151 return excute(para,method,null); 152 153 }154 155 156 /**157 * startTime - required long Start timestamp of data to build, e.g. 1388563200000 for 2014-1-1158 * endTime - required long End timestamp of data to build159 * buildType - required string Supported build type: ‘BUILD’, ‘MERGE’, ‘REFRESH’160 * @param cubeName Cube name.161 * @return162 */163 public static String buildCube(String cubeName,String body){164 String method = "PUT";165 String para = "/cubes/"+cubeName+"/rebuild";166 167 return excute(para,method,body); 168 }169 170 171 /**172 * 173 * @param jobId Job id.174 * @return175 */176 public static String discardJob(String jobId){177 178 String method = "PUT";179 String para = "/jobs/"+jobId+"/cancel";180 return excute(para,method,null); 181 182 }183 184 /**185 * 186 * @param jobId Job id.187 * @return188 */189 public static String getJobStatus(String jobId){190 191 String method = "GET";192 String para = "/jobs/"+jobId;193 return excute(para,method,null); 194 195 }196 197 /**198 * 199 * @param jobId Job id.200 * @param stepId Step id; the step id is composed by jobId with step sequence id; 201 * for example, the jobId is “fb479e54-837f-49a2-b457-651fc50be110”, its 3rd step id 202 * is “fb479e54-837f-49a2-b457-651fc50be110-3”,203 * @return204 */205 public static String getJobStepOutput(String jobId,String stepId){206 String method = "GET";207 String para = "/"+jobId+"/steps/"+stepId+"/output";208 return excute(para,method,null); 209 }210 211 /**212 * 213 * @param tableName table name to find.214 * @return215 */216 public static String getHiveTable(String tableName){217 String method = "GET";218 String para = "/tables/"+tableName;219 return excute(para,method,null); 220 }221 222 /**223 * 224 * @param tableName table name to find.225 * @return226 */227 public static String getHiveTableInfo(String tableName){228 String method = "GET";229 String para = "/tables/"+tableName+"/exd-map";230 return excute(para,method,null); 231 }232 233 234 /**235 * 236 * @param projectName will list all tables in the project.237 * @param extOptional boolean set true to get extend info of table.238 * @return239 */240 public static String getHiveTables(String projectName,boolean extOptional){241 String method = "GET";242 String para = "/tables?project="+projectName+"&ext="+extOptional;243 return excute(para,method,null); 244 }245 246 247 /**248 * 249 * @param tables table names you want to load from hive, separated with comma.250 * @param project the project which the tables will be loaded into.251 * @return252 */253 public static String loadHiveTables(String tables,String project){254 String method = "POST";255 String para = "/tables/"+tables+"/"+project;256 return excute(para,method,null); 257 }258 259 /**260 * 261 * @param type ‘METADATA’ or ‘CUBE’262 * @param name Cache key, e.g the cube name.263 * @param action ‘create’, ‘update’ or ‘drop’264 * @return265 */266 public static String wipeCache(String type,String name,String action){267 String method = "POST";268 String para = "/cache/"+type+"/"+name+"/"+action;269 return excute(para,method,null); 270 }271 272 273 public static String query(String body){274 String method = "POST";275 String para = "/query";276 277 return excute(para,method,body);278 }279 280 281 282 private static String excute(String para,String method,String body){283 284 StringBuilder out = new StringBuilder();285 try {286 URL url = new URL(baseURL+para); 287 HttpURLConnection connection = (HttpURLConnection) url.openConnection();288 connection.setRequestMethod(method); 289 connection.setDoOutput(true);290 connection.setRequestProperty ("Authorization", "Basic " + encoding);291 connection.setRequestProperty("Content-Type","application/json"); 292 if(body !=null){293 byte[] outputInBytes = body.getBytes("UTF-8");294 OutputStream os = connection.getOutputStream();295 os.write(outputInBytes); 296 os.close();297 }298 InputStream content = (InputStream)connection.getInputStream(); 299 BufferedReader in = new BufferedReader (new InputStreamReader (content)); 300 String line;301 while ((line = in.readLine()) != null) {302 out.append(line);303 }304 in.close();305 connection.disconnect();306 307 } catch(Exception e) {308 e.printStackTrace();309 }310 return out.toString();311 }312 }
参考:
http://kylin.apache.org/docs15/howto/howto_use_restapi.html#authentication
Kylin Java RESTful API
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。