Flink-源码学习-FlinkSQL&Table-规则体系 Rules
一、概述https://mp.weixin.qq.com/s/RKYzkYCfZ68l3EfUXS_RDA
Flink-源码学习-元数据体系-Catalog-CatalogManager
一、概述CatalogManager 用来管理 Catalog,且可以同时管理多个 Catalog。也就是说,可以通过在一个相同 SQL 中,跨 Catalog 做查询或者关联操作。
在一个 Flink Session 当中,是可以创建多个 Catalog ,每一个 Catalog 对应于一个外部系统。用户可以在 Flink Table API 或者如果使用的是 SQL Client 的话,可以在 Yaml 文件里指定定义哪些 Catalog 。然后在 SQL Client 创建 TableEnvironment 的时候,就会把这些 Catalog 加载起来。TableEnvironment 通过CatalogManager 来管理这些不同的 Catalog 的实例。这样 SQL Client 在后续的提交 SQL 语句的过程中,就可以使用这些 Catalog 去访问外部系统的元数据了。
Flink在创建运行环境时会同时创建一个CatalogManager,用来管理不同的 Catalog 实例,
https://developer.aliyun.com/article/752539 ...
Spark-源码系列
一、架构设计Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark 是 UC Berkeley AMP lab(加州大学伯克利分校的AMP实验室)所开源的类 Hadoop MapReduce 的通用并行框架。
引用本站文章
Spark-理论笔记-架构设计
Joker
二、阅读环境准备
引用本站文章
Spark-源码学习-阅读环境搭建
Joker
三、集群启动Spark 采用了分布式架构的 master一slave 模型
引用本站文章
...
数据湖-Hudi-源码学习-Query Engines-Spark-Upsert
一、概述二、Spark 引擎层和 Hudi 对接2.1. Catalog2.1.1. Spark Catalog API2.1.2. Hudi Catalog API2.1.3. 集成2.2. Spark DataSource V2三、提交数据在构造好 spark 的rdd 后调用 df.write.format("hudi") 方法执行数据的写入,实际会调用 Hudi 源码中的 $SparkRDDWriteClient.upsert$ 方法实现。
1234567891011public JavaRDD<WriteStatus> upsert(JavaRDD<HoodieRecord<T>> records, String instantTime) { HoodieTable<T, JavaRDD<HoodieRecord<T>>, JavaRDD<HoodieKey>, JavaRDD<WriteStatus>> table = getTa ...
数据湖-Hudi-源码学习-Kernel-BaseHoodieWriteClient
一、概述二、设计
2.1. 主要方法2.1.1. initTable()
构造 HoodieTableMetaClient
setWriteSchemaForDeletes
doInitTable
createTable
validateTableProperties
2.2. preWrite()
数据湖-Hudi-源码学习-Kernel-Table 设计
一、概述Hudi 提供了 Table 的概念,Table 支持 CRUD 数据操作,可以利用现有的大数据集群: 如 HDFS 做数据文件存储,然后使用 SparkSQL 或 Flink 等分析引擎进行数据分析查询。
二、数据操作HUDI 通过 TableFileSystemView 抽象来管理 table 对应的文件,比如找到所有最新版本 FileSlice 中的 base file (Copy On Write Snapshot 读)或者 base+log files (Merge On Read 读)。通过 Timeline 和 TableFileSystemView 抽象,HUDI 实现了非常便捷和高效的表文件查找。
2.1.数据写入2.1.1. Marker 机制Hudi 支持在写入时自动清理未成功提交的数据。 Apache Hudi 在写入时引入标记机制来有效跟踪写入存储的数据文件。
引用本站文章
数据湖-Hudi-源码学习-Kernel-Table-m ...
数据湖-Hudi-源码学习-Kernel-Table-数据操作-Query
一、概述1.1. 类型1.1.1. **快照查询 Snapshot Query **只能查询到给定 COMMIT 或 COMPACTION 后的最新快照数据。
Copy-On-Write 表,Snapshot Query 能够查询到: 已经存在的列式格式文件(Parquet 文件);
Merge-On-Read 表,Snapshot Query 能够查询到: 通过合并已存在的 Base 文件和增量日志文件得到的数据(Parquet 文件 + Avro 文件)。
1.1.2. 读取优化查询 Read Optimized Query
Copy-On-Write 表,和快照查询一样。
Merge-On-Read 表,只能查询到给定的 COMMIT/COMPACTION 之前所限定范围的最新数据。即只能读到列式格式中的最新数据。这种方式不需要合并行和列数据(通俗地说就是上面的快照查询去掉了“行”的部分,只返回“列”的部分),所以拥有比快照查询更好的性能,但是实时性方面会打折扣,因为少读了未合并的数据。
1.1.3. 增量查询 Incremental Query只能查询到最新写入 Hu ...
数据湖-Hudi-源码学习-Kernel-TableFormat-FileLayouts 设计
$File\ Layouts$ 是指 Hudi 的相关文件在存储介质上的分布,Hudi 会管理文件的命名、大小和存放位置,并会在适当时机新建、合并或分裂数据文件。Hudi 在文件操作上有一个重要原则:
1Hudi always creates immutable files on disk
即: 文件一旦创建,永远不会再更新,任何添加、修改或删除操作只会在现有文件数据的基础上合并输入数据一起写入到下一个新文件中。
二、设计Hudi 的文件布局包括数据文件布局和元数据文件布局。Hudi 文件布局是能实现增量查询、数据更新等特性的基础,每个 Hudi 表有一个固定的目录(基本路径 HoodieWriteConfig.BASEPATHPROP),存放 .hoodie 以及数据文件,其中数据文件可以以分区方式进行划分,每个分区包含多个数据文件(基础文件和日志文件[MOR])。
2.1. 工作目录 .hoodie.hoodie 目录是 Hudi 作业的工作目录。
引用本站文章
...