概述
之前已经成功创建了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查询所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复