KIP-5:Apache Kylin深度集成Hudi

简介: KIP-5:Apache Kylin深度集成Hudi

Q1. What are you trying to do? Articulate your objectives using absolutely no jargon.Q2. What problem is this proposal NOT designed to solve?Q3. How is it done today, and what are the limits of current practice?Q4. What is new in your approach and why do you think it will be successful?Q5. Who cares? If you are successful, what difference will it make?Q6. What are the risks?Q7. How long will it take?Q8. How does it work?For Hudi source integration:For Hudi cuboid storage(TBD):For cube rebuild with new Hudi source type(TBD):For cube merge with new Hudi cuboid storage type(TBD):

Q1. What are you trying to do? Articulate your objectives using absolutely no jargon.

对于Hudi数据湖源端集成将企业数据湖中以Hudi格式存储的数据集作为Kylin的源端输入对于Kylin cube重新构建&合并优化支持Kylin的Cuboid使用Hudi格式存储使用Hudi的增量查询视图加速和优化Kylin cube重新构建过程,仅解析上次cube构建后变更的数据使用Hudi的Compaction功能加速和优化Kylin Cube合并过程(针对增量cuboid文件),或者使用Hudi的Upsert功能来合并多个cuboid文件,类似Upsert到MOR表,并支持Select查询

Q2. What problem is this proposal NOT designed to solve?

不支持Hudi的其他类型的数据源(例如Kafka)不在此范围内流式CubeEnginer不在此范围内

Q3. How is it done today, and what are the limits of current practice?

当前无论输入格式是否为Hudi,Kylin都使用Beeline JDBC机制直接连接到Hive源当前的实现无法利用Hudi的原生和高级功能(例如增量查询、读优化视图查询等),Kylin可以从较小的增量cuboid合并和更快的源数据提取中受益

Q4. What is new in your approach and why do you think it will be successful?

对于Hudi Source集成

新的方法使用Hudi的原生优化视图查询和MOR表来加速Kylin的cube构建过程为什么会成功Hudi已在大数据领取和技术栈中发布并成熟,许多公司已经在Data Lake/Raw/Curated数据层中使用了HudiHudi lib已经与Spark DF/Spark SQL集成,可以使用Kylin的Spark Engine查询Hudi数据源Hudi的Parquet基础文件和Avro日志以及索引元数据等都可以通过Hive的外部表和输入格式定义进行连接,Kylin可以利用它们进行提取

Hudi作为Cuboid存储

新的方法使用Hudi的原生增量视图查询优化Kylin的cube重建过程,以仅捕获变更的数据并仅重新计算和更新必要的cuboid文件使用Hudi的upsert功能来操作cuboid文件,以优化Kylin的cube合并过程;而不是以前的join和shuffle方式为什么会成功Hudi根据记录的PK支持upsert,每个cuboid的维度key-id都可以视为PK这样当进行重建和合并操作时,它可以直接更新以前的cuboid文件,或基于PK合并多个cuboid文件并将它们压缩为Parquet文件

Q5. Who cares? If you are successful, what difference will it make?

如果在Kylin中启用了新的集成功能,从事数据挖掘/探索/报告等工作的数据科学家将有更快的cube集构建时间正在开发DW/DM层数据建模的数据工程师将最大程度地减少cube上的单元测试/性能测试的实现和交付工作

Q6. What are the risks?

没有其他风险,因为它只是配置Hudi源类型的替代选择,其他Kylin的组件和管道也不会受到影响

Q7. How long will it take?

N/A

Q8. How does it work?

总体架构设计的逻辑图如下:

对于Hudi源集成在kylin.property中为Hudi源类型添加新的配置项(例如:isHudiSouce = true,HudiType = MOR)使用Hudi原生客户端API添加新的ISouce接口和实现在配置单元外部表中使用Hudi客户端API查询优化视图及提取源Hudi数据集对于Hudi cuboid存储在kylin.property中为cuboid的Hudi存储类型添加新的配置项(例如isHudiCuboidStorage = true)使用Hudi编写API添加新的ITarget接口和实现,以实现内部存储和cuboid文件的操作对于使用新的Hudi源类型cube重建使用Hudi的增量查询API仅从Cube段的时间戳的最后时间提取变更的数据使用Hudi的upsert API合并cuboid的变更数据和以前的历史数据对于新的Hudi Cuboid存储类型cube合并使用Hudi upsert API合并2个cuboid文件

Reference

Hudi framework: https://hudi.apache.org/docs/

hive/spark integration support for Hudi: https://hudi.apache.org/docs/querying_data.html

目录
相关文章
|
1月前
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
63 5
|
1月前
|
存储 SQL 分布式计算
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
58 3
|
1月前
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
29 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
1月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
28 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
1月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
25 9
|
1月前
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
42 5
|
1月前
|
SQL 分布式计算 大数据
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
42 2
|
1月前
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
40 2
|
1月前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
35 1
|
1月前
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
50 1

推荐镜像

更多