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

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据-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的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3天前
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
18 5
|
3天前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
7 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
3天前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
9 1
|
2月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
41 1
|
1月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
2月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
132 2
|
2月前
|
消息中间件 分布式计算 Hadoop
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
39 3
|
2月前
|
消息中间件 运维 Kafka
Apache Flink 实践问题之达到网卡的最大速度如何解决
Apache Flink 实践问题之达到网卡的最大速度如何解决
39 2
|
2月前
|
消息中间件 前端开发 Kafka
【Azure 事件中心】使用Apache Flink 连接 Event Hubs 出错 Kafka error: No resolvable bootstrap urls
【Azure 事件中心】使用Apache Flink 连接 Event Hubs 出错 Kafka error: No resolvable bootstrap urls
|
28天前
|
消息中间件 资源调度 API
Apache Flink 流批融合技术介绍
本文源自阿里云高级研发工程师周云峰在Apache Asia Community OverCode 2024的分享,内容涵盖从“流批一体”到“流批融合”的演进、技术解决方案及社区进展。流批一体已在API、算子和引擎层面实现统一,但用户仍需手动配置作业模式。流批融合旨在通过动态调整优化策略,自动适应不同场景需求。文章详细介绍了如何通过量化指标(如isProcessingBacklog和isInsertOnly)实现这一目标,并展示了针对不同场景的具体优化措施。此外,还概述了社区当前进展及未来规划,包括将优化方案推向Flink社区、动态调整算子流程结构等。
331 31
Apache Flink 流批融合技术介绍

热门文章

最新文章

推荐镜像

更多