Apache Kylin权威指南3.2 设计增量Cube

简介:

3.2 设计增量Cube


3.2.1 设计增量Cube的前提

并非所有的Cube都适用于增量构建,Cube的定义必须包含一个时间维度,用来分割不同的Segment,我们将这样的维度称为分割时间列(Partition Date Column)。尽管由于历史原因该命名中存在“date”的字样,但是分割时间列既可以是Hive中的Date类型、也可以是Timestamp类型或String类型。无论是哪种类型,Kylin都要求用户显式地指定分割时间列的数据格式,例如精确到年月日的Date类型(或者String类型)的数据格式可能是yyyyMMdd或yyyy-MM-dd,如果是精确到时分秒的Timestamp类型(或者String类型),那么数据格式可能是YYYY-MM-DD HH:MM:SS。

在一些场景中,时间由长整数Unix Time来表示,由于对该类型的支持存在争议(详情可参见https://issues.apache.org/jira/browse/KYLIN-1698),因此在目前的版本中并不支持使用长整数类型作为分割时间列。作为一种变通的方法,可以在ETL过程中克服这个问题。具体来说,就是在Hive中为包含长整数时间列的表创建一个视图,将长整数时间列转化为符合Kylin规范的任意类型,在后续的Cube设计中,应使用该视图而不是原始的表。

满足了设计增量Cube的前提之后,在进行增量构建时,将增量部分的起始时间和结束时间作为增量构建请求的一部分提交给Kylin的任务引擎,任务引擎会根据起始时间和结束时间从Hive中抽取相应时间的数据,并对这部分数据做预计算处理,然后将预计算的结果封装成为一个新的Segment,并将相应的信息保存到元数据和存储引擎中。一般来说,增量部分的起始时间等于Cube中最后一个Segment的结束时间。

3.2.2 增量Cube的创建

创建增量Cube的过程和创建普通Cube的过程基本类似,只是增量Cube会有一些额外的配置要求。

1.?Model层面的设置

每个Cube背后都关联着一个Model,Cube之于Model就好像Java中的Object之于Class。如同3.2.1节中所描述的,增量构建的Cube需要指定分割时间列。同一个Model下不同分割时间列的定义应该是相同的,因此我们将分割时间列的定义放到了Model之中。Model的创建和修改在第2章中已经介绍过,这里将跳过重复的部分,直接进入Model Designer的最后一步Settings来添加分割时间列,如图3-1所示。

 

图3-1 定义分割时间列

目前分割时间列必须是事实表上的列,且它的格式必须满足3.2.1节中所描述的要求。一般来说如果年月日已经足够帮助分割不同的Segment,那么在大部分情况下日期列是分割时间列的首选。当用户需要更细的分割粒度时,例如用户需要每6小时增量构建一个新的Segment,那么对于这种情况,则需要挑选包含年月日时分秒的列作为分割时间列。

在一些用户场景中,年月日和时分秒并不体现在同一个列上,例如在用户的事实表上有两个列,分别是“日期”和“时间”,分别保存记录发生的日期(年月日)和时间(时分秒),对于这样的场景,允许用户指定一个额外的分割时间列来指定除了年月日之外的时分秒信息。为了区分,我们将之前的分割时间列称为常规分割时间列,将这个额外的列称为补充分割时间列。在勾选了“Has a separate "time of the day" column?”选项之后(如图3-2所示),用户可以选择一个符合时分秒时间格式的列作为补充的分割时间列。由于日期的信息已经体现在了常规的分割时间列之上,因此补充的分割时间列中不应该再具有日期的信息。反过来说,如果这个列中既包含年月日信息,又包含时分秒信息,那么用户应该将它指定为格式是YYYY-MM-DD HH:MM:SS的常规分割时间列,而不需要勾选“Has a separate "time of the day"column?”。在大部分场景下用户可以跳过补充分割时间列。

2.?Cube层面的设置

Cube的创建和修改在第2章中已经做过介绍,这里将跳过重复的部分,直接进入Cube Designer的“Refresh Settings”。这里的设置目前包含“Auto Merge Thresholds”、“Retention Threshold”和“Partition Start Date”。“Partition Start Date”是指Cube默认的第一个Segment的起始时间。同一个Model下不同的Cube可以指定不同的起始时间,因此该设置项出现在Cube Designer之中。“Auto Merge Thresholds”用于指定Segment自动合并的阈值,而“Retention Threshold”则用于指定将过期的Segment自动抛弃。3.4节将详细介绍这两个功能。

相关文章
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
247 5
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
207 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
182 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
220 1
|
2月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
439 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
340 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
4月前
|
SQL 人工智能 数据挖掘
Apache Flink:从实时数据分析到实时AI
Apache Flink 是实时数据处理领域的核心技术,历经十年发展,已从学术项目成长为实时计算的事实标准。它在现代数据架构中发挥着关键作用,支持实时数据分析、湖仓集成及实时 AI 应用。随着 Flink 2.0 的发布,其在流式湖仓、AI 驱动决策等方面展现出强大潜力,正推动企业迈向智能化、实时化的新阶段。
593 9
Apache Flink:从实时数据分析到实时AI
|
4月前
|
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 及状态管理,显著提升作业稳定性与资源利用率。
533 0
|
3月前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
1310 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
4月前
|
存储 人工智能 数据处理
对话王峰:Apache Flink 在 AI 时代的“剑锋”所向
Flink 2.0 架构升级实现存算分离,迈向彻底云原生化,支持更大规模状态管理、提升资源效率、增强容灾能力。通过流批一体与 AI 场景融合,推动实时计算向智能化演进。生态项目如 Paimon、Fluss 和 Flink CDC 构建湖流一体架构,实现分钟级时效性与低成本平衡。未来,Flink 将深化 AI Agents 框架,引领事件驱动的智能数据处理新方向。
496 6

推荐镜像

更多