如何在kylin中构建一个cube

2024-05-15 03:08
文章标签 构建 kylin cube

本文主要是介绍如何在kylin中构建一个cube,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

image

前面的文章介绍了Apache Kylin的安装及数据仓库里面的星型和雪花模型的概念,这篇文章我们来看下,如何构建一个kylin的cube进行查询。这里不得不吐槽一下Kylin的资料,少之又少出现问题网上基本找不到解决方案,所以想要学习kylin,建议大家买一本书系统的学习一下,这里推荐一本入门的书《基于Apache kylin构建大数据分析平台》,介绍的还可以。

下面来看下如何构建一个cube:

首先,我们要明白kylin的数据源主要来自Hive里面的各种表,如果想要进行测试,那么首先我们要在hive中有自己的表,注意,表的类型基本有两种,一种是事实表,一种是维度表,kylin使用的是星型模型,通常一个事实表会关联多个维度表,表的数据有了,下面就是通过kylin的ui界面来完成整个流程。除此之外keylin还支持从kafka构建流式表,由于使用场景比较少,这里就不讨论这个了。

下面通过一张图看下整个构建cube的操作流程:

image

(1) 登录7070端口下面的kylin的web管理页面,默认的用户名是KYLIN密码是ADMIN

image

(2)点击左上角的加号小按钮,新建一个工程

image

(3)选择这个工程,然后点击model面板,并点击Data Source面板,选择配置hive数据源,并加载需要用到的表同步到kylin里面 image

image

(4)点击Models,开始设计model,这个步骤主要是基础加工,配置一个事实表和多个维表以及他们的关联条件,和需要统计的维度和度量 image

(5)设计cube image

image(6)构建cube image

(7)查看cule的构建进度 image

(8)最后查询cule数据 image

至此一整个的cuble构建流程完事,整体步骤还是比较多的,当然里面有一些步骤并没有说的那么详细,此外设计cuble的步骤有一些高级配置,对优化查询有着比较重要的作用,这块现在还没太深入,这个demo只是让我们有一个整体的认识,如果对高级的设计感兴趣的朋友可以看kylin的官网文档。

Kylin的本质是基于空间换时间的策略来实现亚秒级的查询,本身只是一个Server,充分利用了Hadoop+Hive来把结果集数据预构建到Hbase里来优化提高查询效率。所以想要使用Kylin必须保证你的Hadoop,Hive,Hbase已经安装,并且能正常使用。

构建cube的本质,其实就是把各种可能用到的查询,聚合,统计提前预计算好,然后按规则写入hbase,这样在查询的时候,基于rowkey的查询响应速度非常快,而且随着数据量的增大,查询响应时间基本是个常量,虽然查询很快,但是离线使用MapReduce来预构建cube的过程确实非常之慢,另外一个缺点是单kylin的server并发非常低,根据我们的测试也就40左右,大家可能有疑问,hbase本身支持的并发是非常强大的为什么到了kylin这里就这么低,其实kylin server服务不仅仅只是查询hbase的结果返回给前端,大部分时候都需要在server的内存里做各种运算,比如分页,排序,聚合等,所以如果大并发量一旦瞬间上来可把kylin server所在的tomcat的jvm内存给耗尽,最终导致任务失败或者服务挂掉。所以kylin的定位是给产品或者运营使用的大数据OLAP查询引擎,如果并发量比较高的业务,使用kylin一直要提前测试好,根据并发情况多部署几个kylin server服务。

总结:

总体来说,对于一些字段数固定且不经常改变schema的大表数据,采用kylin来进行OLAP查询是非常适合的,性能也不错,但是如果scheam经常变换,统计的维度和度量也可能变换这种场景是不太适合用kylin来解决的,可以尝试ES或者SOLR来分析,最后需要注意的事kylin的并发支持并不太好,非常高并发的查询服务,一定要严格测试后,多部署几个kylin server且做好读写分离,提交任务的server集群和查询server集群分开部署。



这篇关于如何在kylin中构建一个cube的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

使用Python和python-pptx构建Markdown到PowerPoint转换器

《使用Python和python-pptx构建Markdown到PowerPoint转换器》在这篇博客中,我们将深入分析一个使用Python开发的应用程序,该程序可以将Markdown文件转换为Pow... 目录引言应用概述代码结构与分析1. 类定义与初始化2. 事件处理3. Markdown 处理4. 转

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了