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节将详细介绍这两个功能。

时间: 2024-08-01 12:49:58

Apache Kylin权威指南3.2 设计增量Cube的相关文章

Apache Kylin权威指南2.5 查询Cube

2.5 查询Cube 本节将简要介绍如何查询Cube.更多内容请参考后续的章节(如第5章). Cube构建好以后,状态变为"READY",就可以进行查询了.Kylin的查询语言是标准SQL的SELECT语句,这是为了获得与大多数BI系统和工具无缝集成的可能性.通常的一个查询语句类似于如下的SQL: SELECT DIM1, DIM2, -, MEASURE1, MEASURE2- FROM FACT_TABLE     INNER JOIN LOOKUP_1 ON FACT_TABLE

Apache Kylin权威指南3.4 管理Cube碎片

3.4 管理Cube碎片 增量构建的Cube每天都可能会有新的增量.日积月累,这样的Cube中最终可能包含上百个Segment,这将会导致查询性能受到严重的影响,因为运行时的查询引擎需要聚合多个Segment的结果才能返回正确的查询结果.从存储引擎的角度来说,大量的Segment会带来大量的文件,这些文件会充斥所提供的命名空间,给存储空间的多个模块带来巨大的压力,例如Zookeeper.HDFS Namenode等.因此,有必要采取措施控制Cube中Segment的数量. 另外,有时候用户场景并

Apache Kylin权威指南2.4 构建Cube

2.4 构建Cube 本节将快速介绍构建Cube相关的操作说明和设置,因受到篇幅的限制,许多具体内容无法深入展开,读者可以从后续的第3章和第4章中获得更详细的介绍. 新创建的Cube只有定义,而没有计算的数据,它的状态是"DISABLED",是不会被查询引擎挑中的.要想让Cube有数据,还需要对它进行构建.Cube的构建方式通常有两种:全量构建和增量构建:两者的构建步骤是完全一样的,区别只在于构建时读取的数据源是全集还是子集. Cube的构建包含如下步骤,由任务引擎来调度执行. 1)创

Apache Kylin权威指南导读

前 言 "麒麟出没,必有祥瑞." --中国古谚语 "于我而言,与Apache Kylin团队一起合作使Kylin通过孵化成为顶级项目是非常激动人心的,诚然,Kylin在技术方面非常振奋人心,但同样令人兴奋的是Kylin代表了亚洲国家,特别是中国,在开源社区中越来越高的参与度." --Ted Dunning Apache孵化项目副总裁,MapR首席应用架构师 今天,随着移动互联网.物联网.AI等技术的快速兴起,数据成为了所有这些技术背后最重要,也是最有价值的"

Apache Kylin权威指南3.3 触发增量构建

3.3 触发增量构建 3.3.1 Web GUI触发 在Web GUI上触发Cube的增量构建与触发全量构建的方式基本相同.在Web GUI的Model页面中,选中想要增量构建的Cube,单击Action→Build,如图3-3所示. 不同于全量构建,增量构建的Cube会在此时弹出对话框让用户选择"End Date"(如 图3-4所示),目前Kylin要求增量Segment的起始时间等于Cube中最后一个Segment的结束时间,因此当我们为一个已经有Segment的Cube触发增量构

Apache Kylin权威指南2.2 在Hive中准备数据

2.2 在Hive中准备数据 2.1节介绍了Kylin中的常见概念.本节将介绍准备Hive数据的一些注意事项.需要被分析的数据必须先保存为Hive表的形式,然后Kylin才能从Hive中导入数据,创建Cube. Apache Hive是一个基于Hadoop的数据仓库工具,最初由Facebook开发并贡献到Apache软件基金会.Hive可以将结构化的数据文件映射为数据库表,并可以将SQL语句转换为MapReduce或Tez任务进行运行,从而让用户以类SQL(HiveQL,也称HQL)的方式管理和

Apache Kylin权威指南1.4 Apache Kylin的技术架构

1.4 Apache Kylin的技术架构 Apache Kylin系统可以分为在线查询和离线构建两部分,技术架构如图1-4所示,在线查询的模块主要处于上半区,而离线构建则处于下半区.   图1-4 Kylin的技术架构 我们首先来看看离线构建的部分.从图1-4可以看出,数据源在左侧,目前主要是Hadoop Hive,保存着待分析的用户数据.根据元数据的定义,下方构建引擎从数据源抽取数据,并构建Cube.数据以关系表的形式输入,且必须符合星形模型(Star Schema)(更复杂的雪花模型在成文

Apache Kylin权威指南2.6 SQL参考

2.6 SQL参考 Apache Kylin支持标准SQL作为查询语言,但是SQL有很多变体,Kylin支持的只是SQL所有变体中的一个子集,并不是支持所有现存的SQL语句和语法.用户在使用Kylin之前,需要对Kylin所支持的SQL有一个了解,以避免走弯路. 首先,Kylin作为OLAP引擎,只支持查询,而不支持其他操作,如插入.更新等,即所有的SQL都必须是SELECT语句,否则Kylin会报错. 第二,查询Kylin中SQL语句的表名.列名.度量.连接关系时,需要至少跟一个Cube的模型

Apache Kylin权威指南2.7 小结

2.7 小结 本章介绍了使用Apache Kylin必备的基本概念,如星形数据模型.事实表.维表.维度.度量等,并在这些基础上快速创建了基于Sample Data的模型,构建Cube,最后执行SQL查询.带领读者体验了Apache Kylin的主要使用过程.后续的章节将继续展开和探讨这个过程中的一些关键技术,比如增量构建.可视化和Cube优化等.