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);
        }
	}	
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Apache Kylin 是一款开源的分布式分析引擎,旨在为 OLAP(联机分析处理)场景下大数据处理提供高效的解决方案。Kylin 架构设计主要包括四层:数据存储层、计算层、查询层和访问层。 数据存储层:Kylin 支持多种数据源,包括 HBase、Hive 和 RDBMS。在数据存储层,Kylin 将数据进行切分和存储,并构建多维数据模型和 Cube 模型,以此支持多维分析查询。 计算层:Kylin 计算层主要负责构建 Cube 数据模型,从而支持快速的多维分析。Kylin 使用 MapReduce、Spark 和 Flink 等分布式计算框架构建 Cube 模型,并且采用增量计算和全量计算相结合的方式,以保证数据的实时更新和高效查询查询层:Kylin 查询层主要提供两种查询方式:SQL 和 REST APIKylin 查询层可以直接访问 Kylin Cube 数据模型,同时支持 SQL JOIN 和聚合操作,以支持丰富的多维分析操作。 访问层:Kylin 访问层主要负责提供数据可视化和 BI 工具集成。Kylin 支持多种数据可视化工具,如 Tableau、PowerBI 和 Superset 等,以及多个 BI 工具的集成,如 Apache Zeppelin、Apache Superset 和 Apache Druid 等。 总之,Apache Kylin 架构设计以分布式计算为核心,通过数据存储、计算、查询和访问四层框架提供高效、快速、多维的 OLAP 型数据分析解决方案,可广泛应用于电商、金融、广告等场景的数据分析处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个操蛋的人生!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值