5-Kylin Java Restful API

2024-09-06 06:38
文章标签 java api restful kylin

本文主要是介绍5-Kylin Java Restful API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 最近在做大数据方面的开发, 学习研究了一段时间的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.net16  * @Reference17  * http://kylin.apache.org/docs15/howto/howto_use_restapi.html#authentication18  *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 pagination46      * @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      * @return50      */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="+offset57                             +"&limit="+limit58                             +"&cubeName="+cubeName59                             +"&projectName="+projectName;60         return excute(para,method,null); 61     }62     63     /**64      * 65      * @param cubeName  Cube name.66      * @return67      */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 cubeName79      * @return80      */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      * @return94      */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      * @return
106      */
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      * @return
119      */
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      * @return
132      */
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 id
145      * @return
146      */
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-1
158      * endTime - required long End timestamp of data to build
159      * buildType - required string Supported build type: ‘BUILD’, ‘MERGE’, ‘REFRESH’
160      * @param cubeName  Cube name.
161      * @return
162      */
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      * @return
175      */
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      * @return
188      */
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      * @return
204      */
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      * @return
215      */
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      * @return
226      */
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      * @return
239      */
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      * @return
252      */
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      * @return
265      */
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 }
复制代码

这篇关于5-Kylin Java Restful API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141284

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S