大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录

news2025/1/19 10:18:05

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(正在更新…)

章节内容

上节我们完成了如下的内容:

  • Apache Kylin 构建Cube 准备数据
  • Apache Kylin 构建Cube 测试数据

在这里插入图片描述

Cube 介绍

Apache Kylin 是一个开源的分布式分析引擎,专注于提供大数据的实时OLAP(在线分析处理)能力。Cube(立方体)是 Apache Kylin 的核心概念之一,通过预计算大规模数据的多维数据集合,加速复杂的 SQL 查询。下面详细介绍 Cube 的关键点:

Cube 的基本概念

Kylin 中的 Cube 是通过对一组事实表(通常是业务数据表)进行多维建模后,生成的预计算数据结构。Cube 涉及对多维数据的度量和维度的组合,从而可以在查询时通过检索预先计算的结果来显著减少计算开销。

  • 维度(Dimension):数据中用于分组、筛选和切片的数据字段,例如时间、地区、产品等。
  • 度量(Measure):通常是需要进行聚合计算的数据字段,例如销售额、订单数等。
  • Cuboid:每个 Cube 由多个 Cuboid 构成,Cuboid 是一个特定维度组合的子集。Cube 中每种维度组合都会生成一个 Cuboid,每个 Cuboid 存储了该组合下的预聚合结果。

Cube 的创建过程

  • 数据建模:首先在 Kylin 中创建一个数据模型(Data Model),这个模型定义了事实表和维度表之间的关系,类似于星型或雪花型模式。模型中也定义了需要聚合的度量字段。
  • Cube 设计:基于数据模型设计 Cube,指定 Cube 的维度和度量。Kylin 会根据定义自动计算所有可能的维度组合(Cuboid)。
  • 构建 Cube:构建过程会读取底层数据源(如 Hive、HBase、Kafka),然后根据指定的维度和度量生成每个 Cuboid 的预计算数据。这些预计算结果存储在 HBase 或其他存储引擎中。

Cube 的查询与优化

  • 查询加速:当有 SQL 查询请求到达时,Kylin 会根据查询所涉及的维度组合,选择合适的 Cuboid 返回结果,避免了实时计算,极大地提高了查询性能。
  • Cube 优化:为了控制 Cube 大小和加速构建,Kylin 支持裁剪 Cube,通过配置仅生成部分 Cuboid,这称为“Aggregation Group”,可以减少冗余计算。

实时 OLAP

Kylin 4.0 引入了对实时 OLAP 的支持,使用 Kafka 作为实时数据流输入,构建实时 Cube。通过使用 Lambda 架构,Kylin 可以支持实时和批处理数据的整合分析。

Cube 的典型应用场景

  • 大规模数据分析:Cube 适用于分析超大规模的数据集,通过预计算方式加速查询。
  • 实时分析:实时 Cube 允许用户在近乎实时的基础上分析流数据。
  • 商业智能(BI)工具的集成:Kylin 提供与 Tableau、Power BI 等常见 BI 工具的集成,用户可以使用熟悉的 SQL 查询语言进行复杂的多维分析。

维度表优化

  • 要具有数据一致性,主键值必须是唯一的(否则Kylin构建过程会报错)
  • 维度表越小越好,因为Kylin会将维度表加载到内存中供查询使用,过大的表不适合作为维度表,默认的阈值是300MB
  • 改变频率低,Kylin会在每次构建中试图重用维度表的快照(Snapshot),如果维度表经常改变的话,重用就会失效,这就会导致要经常对维度表创建快照
  • 维度表最好不要是Hive视图(View),因为每次都需要将视图进行物化,从而导致额外的时间开销

事实表优化

  • 移除不参与Cube构建的字段,可以提升构建的速度,降低Cube构建结果的大小
  • 尽可能将事实表进行维度拆分,提取公用的维度
  • 保证维度与事实表的映射关系,过滤无法映射的记录

创建Cube(按日期)

核心步骤

DataSource => Model => Cube

  • Model:描述了一个星型模式的数据结构,定义事实表(FactTable)和维度表(LookUpTable),以及它们之间的关系
  • 基于一个Model可以创建多个Cube,可以减少重复工作

Cube设计

  • 维度:日期
  • 度量:订单商品销售量、销售总金额
select date1, sum(price), sum(amount)
from dw_sales
group by date1;

结构图如下:
在这里插入图片描述

执行步骤

  • 创建项目Project(非必须)
  • 创建数据源(DataSource),指定有哪些数据需要进行数据分析
  • 创建模型(Model),指定具体要对哪个事实表、维度表进行数据分析
  • 创建立方体(Cube),指定对哪个数据模型执行预处理,生成不同维度的数据
  • 执行构建 等待构建完成
  • 再执行SQL查询,获取结果,从Cube中查询结果。

操作步骤

创建项目(Project)

左上角有一个 Add Project
在这里插入图片描述
我们点击之后弹窗,随便填写信息,创建
在这里插入图片描述

创建数据源(DataSource)

此时页面来到这里:

  • 选择:DataSource面板
  • 点击蓝色的小按钮:Load Table From Tree

在这里插入图片描述
点击左侧的数据库:wzk_kylin,选择之后,展开了树:

  • wzk_kylin.dim_channel 点击
  • wzk_kylin.dim_product 点击
  • wzk_kylin.dim_region 点击
  • wzk_kylin.dim_sales 点击

可以看到选中的都成蓝色了,记着点击 SYNC 按钮。
在这里插入图片描述

创建模型(Model)

切换到 Models 面板,点击New按钮,选择 New Model:
在这里插入图片描述
指定模型名称:
在这里插入图片描述

选择事实表,选择 WZK_KYLIN.DW_SALES:
在这里插入图片描述
选择维度,Columns这里段 DATE1:
在这里插入图片描述
选择度量,Columns选择 AMOUNT和PRICE:
在这里插入图片描述
指定分区和过滤条件,不修改:
在这里插入图片描述
完毕之后,可以看到左侧多了一个:(刚才名字改了一下):
在这里插入图片描述

创建立方体(Cube)

新建Cube
在这里插入图片描述
选择数据模型,同时设置一个Cube的名字:
在这里插入图片描述
选择 Add Dimensions 指定维度:
在这里插入图片描述
指定度量:

  • _COUNT_是系统缺省参数给的。
  • 新增 column叫 total_money 选择 DW_SALES.PRICE
  • 新增 column叫 total_amount 选择 DW_SALES.AMOUNT

图片1
在这里插入图片描述
图片2
在这里插入图片描述
指定刷新设置:(默认的没改)
在这里插入图片描述
高级设置,找到Cube Engine的部分,选择 MapReduce:
在这里插入图片描述
后边的都默认就行,最后保存Save之后,可以看到如下的页面:
在这里插入图片描述
选择后面的Actions的Build:
在这里插入图片描述
进入Monitor页面可以看到任务的进度,可视化的,刷新页面可以看到数据在变,但是我性能太差了,需要等好长时间:
在这里插入图片描述
等了好久好久··· 终于执行完毕了:
在这里插入图片描述

执行SQL

进入 Insight 选项卡中,执行下面的SQL进行查询:

select 
  date1,
  sum(price) as total_money,
  sum(amount) as total_amount
from dw_sales
group by date1;

运行出来的结果是:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2214088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TuyaOS开发学习笔记(4)——BLE开发搭建环境、编译烧写(NRF52832)

一、搭建环境 1.1 官方资料 TuyaOS 1.2 安装Visual Studio Code 官网下载:https://code.visualstudio.com 百度网盘:https://pan.baidu.com/s/1R62HT0PVmVzMwOXtCmIQwA 提取码:g9fb 1.3 安装Tuya Wind IDE 启动 Visual Studio Code 后&am…

windows10 输入法突然变成繁体字。

1.在任务栏的输入法上切换到设置页面 2. 进入语言选项 3.浮动在桌面上? 4. 点击繁体或简体切换。

IWO-Kmeans聚类 | MATLAB实现IWO-Kmeans侵入性杂草优化K均值聚类算法

智能优化 | MATLAB实现IWO-Kmeans侵入性杂草优化K均值聚类算法 目录 智能优化 | MATLAB实现IWO-Kmeans侵入性杂草优化K均值聚类算法效果一览基本介绍模型描述程序设计参考资料效果一览 基本介绍 侵入性杂草优化 (IWO) 聚类, 与 K-means 和 GMM 高斯混合模型的比较。 入侵杂草优…

jupyter notebook显示左侧内容方法(版本7也可以用)

1 安装 Nbextensions pip install jupyter_contrib_nbextensions如果安装不成功, jupyter安装Nbextensions后不出现Nbextensions选项 就使用以下语句 conda install -c conda-forge jupyter_contrib_nbextensions然后设置下 jupyter contrib nbextension insta…

kali在git外网的代理

如果发现用git无法直接连接到某些外网项目。可以配置一下代理。 vi /etc/proxychains4.conf 主机可以开一下机场代理&#xff0c;查一下主机的地址和代理所开的端口&#xff0c;我这里是7890 写上代码&#xff1a; socks5 <your ip> <your port> 写上之后wq保…

java内存管理

Java内存管理主要涉及Java虚拟机&#xff08;JVM&#xff09;对内存的分配与回收过程。这一过程确保了Java程序在运行时能够有效地使用内存资源&#xff0c;同时避免了手动管理内存所带来的复杂性和潜在错误。 内存分配&#xff1a; 堆&#xff08;Heap&#xff09;&#xff1a…

【C++】拆分详解 - list

文章目录 一、list的介绍二、list的使用1. 构造2. 迭代器3. 增 删 查 改4. list 迭代器失效问题5. list 排序问题 三、list的模拟实现0. 整体框架1. 迭代器类1.1 operator->1.2 临时对象1.3 const_iterator 2. list类2.1 begin / end2.2 构造 / 析构 / 拷贝构造 / 赋值重载2…

谷歌浏览器如何防范恶意网站和广告

在日常使用互联网时&#xff0c;我们经常会遇到一些恶意网站或广告&#xff0c;这些不仅会影响我们的浏览体验&#xff0c;还可能对我们的设备安全造成威胁。为了帮助大家更好地防范这些问题&#xff0c;本文将详细介绍如何在谷歌浏览器中采取有效的措施来防范恶意网站和广告。…

Grafana+ Node+ Prometheus对服务器进行性能监控

目录 一、Grafana 1.把Grafana压缩文件上传到Linux服务器 2.安装服务 3.启动服务 4.访问 二、Node 1.上传node_exporter-1.5.0.linux-amd64.tar到服务器 2.解压 3.启动服务 三、Prometheus 1.上传prometheus-2.43.0.linux-amd64.tar到服务器 2.解压 3.进入prometh…

【Linux】ComfyUI和SD WebUI之PYTHON环境共享,模型共享,LORA等公共资源共享。最大限度节约空间

需求 一般玩AI绘图都会装ComfyUI和SD WebUI。而且这俩的模型、lora等都是一致的。为了避免空间的浪费&#xff0c;一般会采用共享数据的方式。而且共享的数据可以任意指定分区&#xff0c;这让挂载NAS共享空间成为可能&#xff0c;实现多绘画机ComfyUI和SD WebUI共享资源。 实…

SpringCloud学习记录|day4

学习材料 2024最新SpringCloud微服务开发与实战&#xff0c;java黑马商城项目微服务实战开发&#xff08;涵盖MybatisPlus、Docker、MQ、ES、Redis高级等&#xff09; 网关 微服务下&#xff0c;好多不同地址和端口&#xff0c;而前端只知道8080&#xff0c;这怎么解决&…

不起眼的错误参数导致remote-debugging-port不生效

引言 背景 由于有一些小需求需要控制浏览器批量执行请求&#xff0c;最简单的方案是使用 DrissionPage 来实现&#xff0c;遂有了下面的问题。 问题 通过命令行传入 remote-debugging-port9111 参数&#xff0c;但是调试了一天&#xff0c;一直不生效&#xff0c;各种方法都…

【数据结构与算法】线性表链式存储结构

线性表链式存储结构 文章目录 链式存储结构*头结点和头指针一.线性链表&#xff08;单链表&#xff09;1.1定义1.2初始化1.2.1带头结点的初始化1.2.2不带头结点的初始化 1.3插入1.3.1按位序插入1.3.2指定结点的后插入操作1.3.3指定结点的前插入操作 1.4删除1.4.1按位序删除1.4.…

小猿口算安卓端安装包PK一题秒过关。。。

大家好&#xff0c;我是小黄。 近段时间&#xff0c;越来越多的同学都想去小猿口算里面虐小学生&#xff0c;但是发现越来越多的计算机学生带着科技与他们进行对抗&#xff0c;这样非计算机专业的大学生们​苦不堪言。 现在&#xff0c;非计算机大学生们翻身的机会来了&#…

二叉平衡树(AVL树)Java语言实现

一、二叉平衡树 上一章所示的同一组元素按照不同顺序插入到二叉排序树中可能会产生两种形状不同的二叉排序树。 当出现右边的情况时&#xff0c;树的高度过高&#xff0c;如果要查找值为“70”的节点需要查找7次&#xff0c;其查找次数已经接近于链表了&#xff0c;这样会导致…

短短几日连发数案,艺术家Jennifer Le Feuvre插画版权维权

案件基本情况起诉时间&#xff1a;2024-10-7、2024-10-8、2024-10-9案件号&#xff1a;24-cv-09629、24-cv-09636、24-cv-09640、24-cv-09688、24-cv-09697、24-cv-09709、24-cv-09712、24-cv-09757、24-cv-09775、24-cv-09794原告&#xff1a;Jennifer Le Feuvre原告律所&…

【安装教程】Windows10环境下Pytorch(GPU版)的安装与配置

目录 Pytorch的概念安装前要求一、NVIDIA驱动查看二、Anaconda的安装2.1 Anaconda的安装2.2 创建虚拟环境2.3 激活虚拟环境 三、CUDA ToolKit的安装&#xff08;选做&#xff0c;CPU版本可跳过&#xff09;3.1 CUDA安装包的下载&#xff08;以CUDA11.6.0为例&#xff09;3.2 CU…

架构设计笔记-19-大数据架构设计理论与实践

知识要点 案例分析 1.Lambda架构优缺点 2.web架构设计 3.web系统架构设计相关技术 论文

面向对象的继承性

目录 1、继承的概念 2、方法的重写 3、重载和重写的区别 4、super关键字 5、this和super的区别 6、final关键字 7、抽象类 8、接口 1、继承的概念 在程序中&#xff0c;继承描述的是事物之间的所属关系&#xff0c;通过继承可以使很多事物之间形成一种关系体系。 在Java…

51单片机的智能空调【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温湿度传感器继电器按键等模块构成。适用于空调温度控制等相似项目。 可实现功能: 1、LCD1602实时显示室内温湿度、运行模式、设定温度和定时时间 2、首先选择空调的运行模式&#xff0c;如加热、制冷、除湿&…