我是靠谱客的博主 奋斗板凳,最近开发中收集的这篇文章主要介绍Kylin的Api查询,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

之前已经成功创建了kylin的cube,并且可以使用 web ui查询。但除了通过web ui进行操作,我们还可以使用api调用。

在使用之前,我们要先进行认证,目前Kylin使用 basic Authentication。Basic Authentication是一种非常简单的访问控制机制,它先对账号密码基于Base64编码,然后将其作为请求头添加到HTTP请求头中,后端会读取请求头中的账号密码信息以进行认证。

以Kylin默认的账号密码 ADMIN/KYLIN 为例,对相应的账号密码进行编码后,结果为Basic QURNSU46S1lMSU4=,那么HTTP对应的头信息 则为Authorization:Basic QURNSU46S1lMSU4=。

查询SQL

curl -X POST -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json'
http://localhost:7070/kylin/api/query -d '{
"sql":"select market,sum(sales) from kylin_sale group by market",
"offset":0,
"limit":10,
"acceptPartial":false,
"project":"my_kylin"
}'

参数解释:

sql:必填,字符串类型,请求的SQL。
offset:可选,整型,查询默认从第一行返回结果,可以设置该参数以决定返回数据从哪一行开始往后返回。
limit:可选,整型,加上limit参数后会从offset开始返回对应的行数, 返回数据行数小于limit的将以实际行数为准。
acceptPartial:可选,布尔类型,默认是true,如果为true,那么实际上最多会返回一百万行数据;如果要返回的结果集超过了一百万行,那么 该参数需要设置为false。
project:可选,字符串类型,默认为DEFAULT,在实际使用时,如 果对应查询的项目不是DEFAULT,那就需要设置为自己的项目。

Put提交cube

curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json'
http://localhost:7070/kylin/api/cubes/my_cube/build -d '{
"startTime":0,
"endTime":"$endTime",
"buildType":"BUILD"
}'

上面的内容里面,url里面的my_cube是你自己的cube名,endTime是你需要去指定的,startTime : 当cube中不存在segment时,可以将其设置为0,那么就会从头开始算。做增量时,startTime 要设置为上一次build的endTime。endTime:时间精确到毫秒(例1388563200000)。

注意点
我们在通过RESTful API向kylin进行build和rebuild的时候一定要观察kylin的web界面下面的Montior进程,否则不小心运行太多进程导致服务器崩掉

JAVA API

JDBC连接方式和hive、mysql很相似。参考官网的:JDBC驱动
maven依赖

<dependencies>
<dependency>
<groupId>org.apache.kylin</groupId>
<artifactId>kylin-jdbc</artifactId>
<version>2.5.1</version>
</dependency>
</dependencies>
package com.shsxt.kylinTest;
import org.apache.kylin.jdbc.Driver;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class KylinJdbc {
public static void main(String[] args) throws IllegalAccessException,
InstantiationException, ClassNotFoundException, SQLException {
KylinJdbc kylinJdbc = new KylinJdbc();
kylinJdbc.connectJdbc();
}
public void connectJdbc() throws ClassNotFoundException, IllegalAccessException,
InstantiationException, SQLException {
Driver driver = (Driver) Class.forName("org.apache.kylin.jdbc.Driver").newInstance();
Properties properties = new Properties();
properties.put("user","ADMIN");
properties.put("password","KYLIN");
//url后面跟上你的project的名称
Connection connect = driver.connect("jdbc:kylin://192.168.4.10:7070/my_kylin",
properties);
//sql语句和kylin库所含数据一一对应。
Statement statement = connect.createStatement();
ResultSet resultSet = statement.executeQuery("select market,sum(sales) from kylin_sale
group by market");
while(resultSet.next()){
String market = resultSet.getString(1);
long sales = resultSet.getLong(2);
System.out.println(market+" : "+ sales);
}
}
}

最后

以上就是奋斗板凳为你收集整理的Kylin的Api查询的全部内容,希望文章能够帮你解决Kylin的Api查询所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部