4.kylin的Cube的构建优化

Kylin--麒麟分析 --Spark+Parquet Kylin_部分做查询优化和底层的一些小逻辑 阅读详情

一丶Cube的构建算法

逐层构建算法:

说明:我们知道,在逐层算法中,按维度层数减少来计算,每一层级的计算,是基于他上一层级的结果来计算的,每一轮的计算都是一个 MapReduce 任务,且串行执行;一个 N 维的Cube,至少需要 N 次 MapReduce Job。
图解:
在这里插入图片描述
优点:

  1. 此算法充分利用了 MapReduce 的优点,处理了中间复杂的排序和 shuffle 工作,故 而算法代码清晰简单,易于维护;
  2. 受益于 Hadoop 的日趋成熟,此算法非常稳定,即便是集群资源紧张时,也能保证 最终能够完成

缺点:

  1. MapReduce 任务过多,耗费集群的资源
  2. Map中,没有进行聚合操作,shuffle压力过大,效率会降低

快速构建算法:

图解:
在这里插入图片描述
与逐层构建算法来比:

  1. Mapper 会利用内存做预聚合,算出所有组合;Mapper 输出的每个 Key 都是不同的, 这样会减少输出到 Hadoop MapReduce 的数据量, 最后再会进行聚合一次大reduce,Combiner 也不再需要;
  2. 一轮 MapReduce 便会完成所有层次的计算,减少 Hadoop 任务的调配
  3. 没有逐层构建算法稳定, 毕竟是基于内存做的聚合

总结: kylin在这里面做的很完善, 会根据数据, 自动选择不同的算法来进行计算,这一点我们无需担心


二丶 Cube的存储原理

为了提高,查询的效率以及减少存储的数据量;
cube 到hbase进行存储图解:
在这里插入图片描述
在这里插入图片描述
文字说明:

  1. 我们会将各个维度,进行映射为一个数字,来标明(我们这里先称它为A)
  2. hbase存储的时候,row key 会采用 Cuboid id+A 来进行存储
  3. Cuboid id是维度的层级的组合,维度值是维度所对应的值的组合
  4. 有人会想到, 如果这个对应的数字标明是两位,三位数,这时候是怎么存储的呢?其实是按照下面方式进行存储的,而不是真的按照数字存储

图解: 在这里插入图片描述

三丶Cube的构建优化

问: 我们为什么要进行优化?
答: 因为我们构建的维度的组合个数是呈指数增长的,当我们的维度达到几十,甚至上百个的时候, 这个时候构建Cube将会被称为灾难,所以kylin给我们提供了以下几种解决方案;

3.1使用聚合组(Aggregation group)

聚合组是一种强大的剪枝工具,我们可以将一些没有满足我们的硬性条件给过滤掉,减少Cube的构建维度分组

1.强制维度(Mandatory)

如果一个维度被定义为强制维度,那么这个分组产生的所 有 Cuboid 中每一个 Cuboid 都会包含该维度。每个分组中都可以有 0 个、1 个或多个强制维 度。如果根据这个分组的业务逻辑,则相关的查询一定会在过滤条件或分组条件中,因此可以在该分组中把该维度设置为强制维度
在这里插入图片描述

2.层级维度(Hierarchy)

如果根据这个分组的业务逻辑,则多个维度直接存在层级关系,因此可以在该分组中把这些维度设置为层级维度。(如地区的省级,市级,县级,县级和市级,就不应该单独存在,因为容易有重名的)

在这里插入图片描述

3.联合维度(Joint)

每个联合中包含两个或更多个维度,如果某些列形成一个联合, 那么在该分组产生的任何 Cuboid 中,这些联合维度要么一起出现,要么都不出现。每个分 组中可以有 0 个或多个联合,但是不同的联合之间不应当有共享的维度

在这里插入图片描述

3.2 Row key 的优化

1. 被用作where过滤的维度放在前面:

在这里插入图片描述

2. 基数大的维度放在及基数小的维度前面:
在这里插入图片描述

3.3 并发粒度优化

当 Segment 中某一个 Cuboid 的大小超出一定的阈值时,系统会将该 Cuboid 的数据分片 到多个分区中,以实现 Cuboid 数据读取的并行化,从而优化 Cube 的查询速度。具体的实 现方式如下:构建引擎根据 Segment 估计的大小,以及参数“kylin.hbase.region.cut”的设置决 定 Segment 在存储引擎中总共需要几个分区来存储,如果存储引擎是 HBase,那么分区的数 量就对应于 HBase 中的 Region 数量。kylin.hbase.region.cut 的默认值是 5.0,单位是 GB,也 就是说对于一个大小估计是 50GB 的 Segment,构建引擎会给它分配 10 个分区。用户还可 以通过设置 kylin.hbase.region.count.min(默认为 1)和 kylin.hbase.region.count.max(默认为 500)两个配置来决定每个 Segment 最少或最多被划分成多少个分区。

3.4 衍生维度

我也没搞明白是怎么回事…这里实在不好意思

总结: 只知道是以查询时的速度慢,换取了构建Cube时的快速度

kylin的Cube构建原理及优化 Kylin的Cube构建原理 cube的构建主要有两种算法:逐层构建算法、快速构建算法,无论是采用哪种算法,首先是从Hive表中拉取数据,根据配置的星型模型,把hive中涉及的表关联起来,并拉取所有的字段形成一个中间层的宽表,如图 然后根据落地中间表的数据生成cube 逐层构建算法: 一个N维的Cube,是由1个N维的立方体、N个(N-1)维子立方体、N*(N-1)/2个(N-2)维子立方体、.....、N个1维子立方体和1个0维子立方体构成,总共由2^N个子立方体组成,逐层算法中,就是按照 阅读详情

相关推荐

kylin的cube构建

1、kylin的构建流程 2、cube构建算法 2.1、逐层构建算法 我们知道,一个N维的Cube,是由1个N维子立方体、N个(N-1)维子立方体、N*(N-1)/2个(N-2)维子立方体、…、N个1维子立方体和1个0维子立方体构成,总共有2^N个子立方体组成, 在逐层算法中,按维度数逐层减少来计算,每个层级的计算(除了第一层,它是从原始数据聚合而来),是基于它上一层级的结果来计算的。比如,[Group by A, B]的结果,可以基于[Group by A, B, C]的结果,通过去掉C后聚

TU_JCN的博客 894

Kylin实战:建立cube的优化

目录 背景 Kylin的维度组合优化 1、 Mandatory维度 2、 hierarchy维度 3、 derived维度 4、 联合维度 Kylin的Rowkey优化 1、编码 2、顺序 3、分片 背景 了解OLAP Cube的人都会知道,建立cube的过程中往往会出现“维度爆炸”问题。Kylin是典型的Multidimensional OLAP应用,牺牲灵活性,使用预计...

anmo1221的博客 559

大数据Kylin(六):Kylin构建Cube算法

by-layer” Cubing把一个大任务划分为许多步骤,每一步骤的计算依赖于上一个步骤的输出结果,所以当某一个步骤的计算出现问题时,可以再次读取上一步骤的结果重新计算,而不用从头开始。在player-1,根据源数据得到1个4-D的cuboid;Kylin在计算Cube之前对数据进行采样,在“fact distinct”步,利用HyperLogLog模拟去重,估算每种组合有多少不同的key,从而计算出每个Mapper输出的数据大小,以及所有Mapper之间数据的重合度,据此来决定采用哪种算法更优。

Lansonli(蓝深李)的博客 3073

KylinCube构建优化

构建之前,可以对数据进行预处理,以提高构建任务的性能。数据清洗可以过滤掉无效数据,减少构建任务的数据量;为了减少构建时间,可以使用增量构建的方法。增量构建只计算新增的数据,然后将新增的数据合并到已有的。的设计可以提高构建任务的性能。常见的调整方法包括选择合适的维度、度量、聚合等。支持将构建任务分成多个子任务并行执行,以提高构建任务的性能。通过并行计算和增量构建等技术来提高构建任务的性能。构建优化的详细介绍,包括优化方法和示例代码。的设计对构建任务的性能有很大影响。的性能,加快数据分析和查询的速度。

互联网知识分享 372

MATLAB 设置legend加标题

x1 = linspace(0,5); y1 = sin(x1/2); plot(x1,y1) hold on x2 = [0 1 2 3 4 5]; y2 = [0.2 0.3 0.6 1 0.7 0.6]; scatter(x2,y2,'filled') hold off legend({'sin(x/2)','2016'},'Location','northwest','Orientation','horizontal')%水平 legend添加标题 lgd = legend; lgd.Fon

早起CaiCai的学习空间 4713

智能音箱开发者必看:CEVA-BX vs Cadence HiFi音频DSP实战选型指南(附功耗对比表)

本文深入对比了CEVA-BX和Cadence HiFi两大音频DSP架构在智能音箱开发中的性能差异,涵盖语音唤醒、多麦克风阵列处理等核心场景。通过实测数据和功耗对比表,为开发者提供选型参考,帮助优化产品性能和能效表现。

weixin_29309213的博客 224

Kylin (五) --------- Cube 构建优化

Cube 构建优化

在森林里麋了鹿 1503

Hi3516CV610 YOLOv8模型转换与部署实战:从源码到板端推理全流程解析

本文详细解析了Hi3516CV610开发板上YOLOv8模型的转换与部署全流程,包括模型转换、量化、编译和部署等关键步骤。通过实战案例和避坑指南,帮助开发者高效实现从PyTorch模型到嵌入式设备的推理优化,适用于智能门禁、视频分析等实时场景。

weixin_30790841的博客 651

Kylin Cube设计新视界:稀疏数据集的优化之旅

然而,并非所有的数据集都是密集的,稀疏数据集在某些特定场景下也扮演着重要角色。Kylin的Cube设计在一定程度上支持稀疏数据集,通过选择性包含维度、使用维度字典和数据聚合等策略,可以优化稀疏数据集的存储和查询。然而,对于高度稀疏的数据集,可能需要额外的优化措施,如数据预处理和查询重写。同时,尝试在实际项目中应用这些策略,以提高稀疏数据集的处理效率。在设计Cube时,可以选择性地包含稀疏维度,以减少存储空间和提高查询性能。以下是一个示例,展示了如何在Kylin中设计支持稀疏数据集的Cube。

2401_85439108的博客 646

【ComfyUI】Wan2.2 Rapid-AIO-Mega 二次元文生视频

通过 SD3 采样体系与 Wan 系列专用的 **WanVaceToVideo** 视频生成节点,整个流程从模型加载、文案编码、潜空间采样到视频合成一气呵成,能够稳定输出画面精致、角色统一、光影氛围鲜明的动态画面。这套工作流重点整合了视频长度、帧率、分辨率等核心参数控制,并结合 KSampler 的细节生成能力,旨在让用户能在 ComfyUI 中快速生成高质量的二次元叙事视频。

Mr数据杨 1975

QGIS之二十六pbf转osm转shp

QGIS之二十六pbf转osm转shp

yilvyangguang520的博客 7491

kylin性能优化

kylin性能优化 文章目录kylin性能优化一. 优化 cube设计1. 来源优化2. 输出优化3. 参数优化4. 维度转度量优化5. 设计优化(1)Aggregation Groups (聚集组)(2)Rowkeys(3)Mandatory Cuboids (强制组合) 用的不多,再学习(4)Cube Engine (构建引擎)(5)Advanced Dictionaries(6)Advanced Snapshot Table (从未用过)(7)Advanced ColumnFamily二. 优化 Cu

大数据、数据仓库、数据治理、数据开发、数据库等相关数据方面经验分享~ 1568

Codex 自定义模型操作指南:CLI 与桌面客户端双端实操

检查版本 codex --version # 预期输出类似:codex-cli 0.133.0-alpha.1 # 如未安装 npm install -g @openai/codex假设你要接入DeepSeek,在# 临时设置(当前终端会话有效)export DEEPSEEK_API_KEY="sk-你的 DeepSeek API Key"# 永久设置(推荐,写入 shell 配置)

篮球界最会写bug的人;程序猿中打球最菜的人。 453

Kylin快速入门系列(4) | Cube构建优化

  此篇为大家带来的是Cube构建优化。 目录一. 使用衍生维度(derived dimension)二. 使用聚合组(Aggregation group)四. Row Key优化五. 并发粒度优化   上一篇博文我们已经介绍过,在没有采取任何优化措施的情况下,Kylin会对每一种维度的组合进行预计算,每种维度的组合的预计算结果被称为Cuboid。假设有4个维度,我们最终会有24 =16个Cuboid需要计算。   但在现实情况中,用户的维度数量一般远远大于4个。假设用户有10 个维度,那么没有经过任何优

不温卜火 5560

Python 爬虫实战:亚马逊 + eBay 商品信息跨平台抓取(价格 / 销量 / 评价对比)

亚马逊和 eBay 是全球知名的电商平台,拥有海量的商品信息。对于消费者来说,比较不同平台上的商品价格、销量和用户评价可以帮助他们找到性价比最高的商品。对于商家而言,了解竞争对手的商品信息有助于优化自身的产品策略和定价策略。然而,手动在两个平台上逐一比较商品信息是非常耗时且低效的。因此,开发一个能够自动抓取并对比这两个平台商品信息的爬虫工具具有重要的实际意义。

yansideyucsdn的博客 615

RHEL 8 与 RHEL 7 与 RHEL 6 的比较,RHEL 8强到离谱!

Red Hat Enterprise Linux(RHEL)是企业级 Linux 发行版中最受欢迎的操作系统之一。RHEL 为服务器和企业环境提供了高性能、稳定性和安全性,适用于各种数据中心和云计算平台。自 RHEL 6 以来,Red Hat 对其操作系统进行了多次重大更新,RHEL 7 和 RHEL 8 带来了许多新的特性、工具和架构变化。

网络技术联盟站 705

olap分析引擎——Kylin4.0

alop分析利器---预计算神器kylin

友培的博客 1428

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Apache Kylin从入门到精通

Kylin 文章目录Kylin一、概述1.1 Kylin定义1.2 Kylin架构1.3 Kylin特点1.4 Apache Kylin4 概述为什么选择 Parquet 替换 HBase?预计算结果在 Kylin4.0 中如何存储?Kylin 4.0 的构建引擎Kylin 4.0 的查询引擎Kylin 4.0 与 Kylin 3.1 功能对比Kylin 4.0 性能表现如何升级Kylin 4.0 查询和构建调优Kylin 4.0 用户案例二、Kylin环境搭建(4.x)软件要求硬件要求Hadoop 环境K

jast 6306

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Kylin的介绍、使用和原理架构(Kylin3.0和Kylin4.0,Cube,去重原理,性能优化,MDX For Kylin,BI工具集成)

Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。在Apache Kylin的现有实现中,Cube的每个Segment都会创建独立的字典,这种方式会导致相同数据在不同Segment字典中被映射成不同的值,这会导致最终的去重结果出错。

迷雾总会解 5396

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

即席查询-Kylin

即席查询之预处理方案的代表

小王是个弟弟 9125

全网第一份 Kylin 4.0 性能调优指南!

Kylin 4.0相较之前的版本是一个重大的架构升级版本,全新的构建引擎和查询引擎极大地提升构建性能和查询性能,解决了查询单点问题等痛点;去除了 HBase 依赖,很大程度地解决了 K...

Focus on Lakehouse 1222

Kylin (六) --------- 查询性能优化

Kylin 查询性能优化

在森林里麋了鹿 1366

Kylin cube构建过程优化

Kylin将Cube构建任务分解为几个依次执行的步骤,这些步骤包括Hive操作、MapReduce操作和其他类型的操作。如果你有很多Cube构建任务需要每天运行,那么你肯定想要减少其中消耗的时间。下文按照Cube构建步骤顺序提供了一些优化经验。 创建Hive的中间平表 这一步将数据从源Hive表提取出来(和所有join的表一起)并插入到一个中间平表。如果Cube是分区的,Kylin会加上一个时...

大数据训练营 6938

Kylin构建Cube优化

【Kylin 技术贴倾情奉献——夏天小厨原创】Apache Kylin官宣它的定位是一款千亿级OLAP引擎,在其高性能的背后,Cube的构建显得至关重要。因此优化Cube也成为数据分析必不可少的技能之一,那为什么要优化Cube呢?因为随着维度数的增加,Cuboid的数量会随其爆炸式递增,如果不优化Cube,不仅Build Cube时间会很漫长,而且Cube的膨胀率也会让你害怕,从而占用大量的磁盘空...

夏天小厨的博客 2508

Kylin实战(六)—— Kylin Cube构建优化以及增量构建Cube

文章目录Cube 构建优化方向:Cube 构建优化的几种方式:1、使用衍生维度(derived dimension)(官网提供)1) `Normal`和`Derived`的选用2、使用聚合组什么是聚合组1)强制维度(Mandatory Dimensions)2)层级维度3)联合维度3、RowKey优化1)将用作过滤条件(where)的维度放在前边2)基数大的维度放在基数小的维度的前边4、并发粒度优化1)通过增加region 切分增加并发力度2)通过设置Region的数量范围来控制并发粒度增量构建Cube流程

qq_41018861的博客 1380

终于懂了如何进行Cube优化

        在上一篇介绍Cube碎片化管理的博客????关于Cube碎片管理,你需要知道这些!发出之后,收到了比较多好的反馈。于是博主趁热打铁,于本篇博客为大家带来关于Cube优化 的知识讲解。 文章目录Cube剪枝优化为什么要进行Cuboid剪枝优化检查Cuboid数量检查Cube大小使用衍生维度聚合组结语 Cube剪枝优化 为什么要进行Cuboid剪枝优化      

大数据梦想家 1万+
上一篇: 3.kylin在linux上定时调度脚本
下一篇: Cannot obtain block length for LocatedBlock
First_____
博客等级 码龄6年 132粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值