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

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

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

目前已经更新到了:

Hadoop(已更完)

HDFS(已更完)

MapReduce(已更完)

Hive(已更完)

Flume(已更完)

Sqoop(已更完)

Zookeeper(已更完)

HBase(已更完)

Redis (已更完)

Kafka(已更完)

Spark(已更完)

Flink(已更完)

ClickHouse(已更完)

Kudu(已更完)

Druid(已更完)

Kylin(正在更新…)

章节内容

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


Apache Kylin 构建Cube 准备数据

Apache Kylin 构建Cube 测试数据

2c689492a490aae748e1949419c67cde_cf70b74baa6c46dbbbbd67df33c8cca8.png 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;

7072b6e6ed18ead783420f251bbc947b_0f9c1a5f05cb4383a720bf1d274e0abb.png 执行步骤

创建项目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;

运行出来的结果是:

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
6月前
|
机器学习/深度学习 算法 大数据
构建数据中台,为什么“湖仓一体”成了大厂标配?
在大数据时代,数据湖与数据仓库各具优势,但单一架构难以应对复杂业务需求。湖仓一体通过融合数据湖的灵活性与数据仓的规范性,实现数据分层治理、统一调度,既能承载海量多源数据,又能支撑高效分析决策,成为企业构建数据中台、推动智能化转型的关键路径。
|
9月前
|
SQL 分布式计算 大数据
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
本文深入介绍 Hive 与大数据融合构建强大数据仓库的实战指南。涵盖 Hive 简介、优势、安装配置、数据处理、性能优化及安全管理等内容,并通过互联网广告和物流行业案例分析,展示其实际应用。具有专业性、可操作性和参考价值。
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
|
7月前
|
存储 SQL 分布式计算
MaxCompute x 聚水潭:基于近实时数仓解决方案构建统一增全量一体化数据链路
聚水潭作为中国领先的电商SaaS ERP服务商,致力于为88,400+客户提供全链路数字化解决方案。其核心ERP产品助力企业实现数据驱动的智能决策。为应对业务扩展带来的数据处理挑战,聚水潭采用MaxCompute近实时数仓Delta Table方案,有效提升数据新鲜度和计算效率,提效比例超200%,资源消耗显著降低。未来,聚水潭将进一步优化数据链路,结合MaxQA实现实时分析,赋能商家快速响应市场变化。
337 0
|
4月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
752 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
448 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
6月前
|
SQL 人工智能 数据挖掘
Apache Flink:从实时数据分析到实时AI
Apache Flink 是实时数据处理领域的核心技术,历经十年发展,已从学术项目成长为实时计算的事实标准。它在现代数据架构中发挥着关键作用,支持实时数据分析、湖仓集成及实时 AI 应用。随着 Flink 2.0 的发布,其在流式湖仓、AI 驱动决策等方面展现出强大潜力,正推动企业迈向智能化、实时化的新阶段。
775 9
Apache Flink:从实时数据分析到实时AI
|
6月前
|
SQL 人工智能 API
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
Apache Flink 2.1.0 正式发布,标志着实时数据处理引擎向统一 Data + AI 平台迈进。新版本强化了实时 AI 能力,支持通过 Flink SQL 和 Table API 创建及调用 AI 模型,新增 Model DDL、ML_PREDICT 表值函数等功能,实现端到端的实时 AI 工作流。同时增强了 Flink SQL 的流处理能力,引入 Process Table Functions(PTFs)、Variant 数据类型,优化流式 Join 及状态管理,显著提升作业稳定性与资源利用率。
696 0
|
5月前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
1854 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架

热门文章

最新文章

推荐镜像

更多