Apache Kylin 入门 6 - 优化 Cube

栏目: 数据库 · 发布时间: 6年前

内容简介:Hive 表支持多分区(Partition),简单地说,一个分区就是一个文件目录,存储了特定的数据文件。当有新的数据生成的时候,可以将数据加载到指定的分区,读取数据的时候也可以指定分区。对于 SQL 查询,如果查询中指定了分区列的属性条件,则 Hive 会智能地选择特定分区(也就是目录),从而避免全量数据的扫描,减少读写操作对集群的压力。Kylin 支持增量的 Cube 构建,通常是按时间属性来增量地从 Hive 表中抽取数据。如果 Hive 表正好是按此时间属性做分区的话,那么就可以利用到 Hive 分

Hive 表支持多分区(Partition),简单地说,一个分区就是一个文件目录,存储了特定的数据文件。当有新的数据生成的时候,可以将数据加载到指定的分区,读取数据的时候也可以指定分区。对于 SQL 查询,如果查询中指定了分区列的属性条件,则 Hive 会智能地选择特定分区(也就是目录),从而避免全量数据的扫描,减少读写操作对集群的压力。

Kylin 支持增量的 Cube 构建,通常是按时间属性来增量地从 Hive 表中抽取数据。如果 Hive 表正好是按此时间属性做分区的话,那么就可以利用到 Hive 分区的好处,每次在 Hive 构建的时候都可以直接跳过不相干日期的数据,节省 Cube 构建的时间。这样的列在 Kylin 里也称为分割时间列(Partition Time Column),通常它应该也是 Hive 表的分区列。

二、Cube 构建优化

1、维度优化

  1. 分析查询条件,不参与 Group By 或者 Where 过滤的条件维度一定不要勾选;
  2. 一般而言,Left Join 右侧表里面的字段均可以作为 Derived (衍生)维度;
  3. 必需维度、层级维度、联合维度、衍生维度四种维度优化方案;
  4. 聚合组进一步对维度组合进行优化。

必需维度、层级维度、联合维度、衍生维度以及聚合组可以参看 Apache Kylin 入门 5 一文的详细说明。

2、其他优化

  1. RowKeys 顺序:Mandatory 维度、where 过滤条件中出现频率较多的维度、高基数维度、低基数维度;
  2. ShardBy 设置:建议选择基数较大的列作为 ShardBy 列,以使得数据可以均匀分布;
  3. 数据压缩:Kylin 针对维度字典以及维度表快照采用了特殊的压缩算法,对于 HBase 中的聚合计算数据利用了 Hadoop 的 LZO 或者是 Snappy 等压缩算法,从而保证存储在 HBase 以及内存中的数据尽可能地小;
  4. 对于大的事实表可以采用分区来增量构建,然后设置定期自动合并(Merge)操作;
  5. 事实表中日期数据类型为尽可能设置为 date;
  6. ShardBy 字段有助于全部数据分散分布在各个 Region 中,有助于防止出现数据倾斜等问题;
  7. ShardBy 字段为 True 后,同一个值的数据会存储在一起,便于批量捞取数据。

三、注意事项

1、哪些维度参与了 Cuboid 构建?

很多人会误以为只有聚合组 Includes 里面被选择的维度才参与 Cube 构建的计算,其实真正参与计算是 Dimensions 设置界面选择为 Default 的那些维度,还有 Left Join 的字段(如果其 Derived 字段被勾选)。

简单来说,在 RowKeys 排序界面看到的维度都会参与 Cuboid 的构建,如果在 RowKeys 看到不想参与计算的维度,可以到 Dimensions 设置界面进行修改。

2、结合业务设置层级维度

层级维度在设置的时候一定要深刻理解业务,例如:企业到底归属到行业类型下还是归属到区域类型下?从层级结构的角度来讲都是可以的,深层次挖掘业务需求后我们会发现,凡是查询企业的时候均附带有区域的过滤条件,因此将企业归属到区域的层级下比归属到行业类型下更加有效。

3、善于尝试

在实践中,可能会遇到各种不确定的思路,最佳的做法是去实践,多建立 Model 和 Cube,从不同层次去优化,去尝试,在实践中不断总结经验。

Any Code,Code Any!

扫码关注『AnyCode』,编程路上,一起前行。

Apache Kylin 入门 6 - 优化 Cube

以上所述就是小编给大家介绍的《Apache Kylin 入门 6 - 优化 Cube》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

零基础学Minecraft编程

零基础学Minecraft编程

Martin O''Hanlon、David Whale / 中文Minecraft Wiki翻译团队 / 人民邮电出版社 / 2015-9-7 / 79

在你体验Minecraft冒险的同时,学习宝贵的编程技能! 如果你很喜欢玩Minecraft,却被游戏中的建造耗费大量时间而困扰,并且你想要对游戏添加一些改动,那么本书就是为你而设计的。在游戏中,你可以学习许多Python编程技能,在PC、Mac或树莓派上与游戏进行互动。这些冒险不仅局限在虚拟世界——你也将会学习如何将Minecraft与电子元件连接起来,这样你的Minecraft世界就能够......一起来看看 《零基础学Minecraft编程》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具