自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 Iceberg Changelog

Iceberg流式更新目前只支持Append的数据,不支持更新删除。

2024-03-04 20:20:51 959

原创 FlinkSQL ChangeLog

登录sql-client,创建一个upsert-kafka的sql作业(注意,这里发送给kafka的消息必须带key,普通只有value的消息无法解析,这里的key即是主键的值)发送消息带key和消费消息显示key方式如下作业的DAG图如下。

2024-03-02 09:40:59 1438

原创 Flink分区相关

真正有用的信息是在table表的信息当中,核心在tables.put(tablePath, table.copy());这一句当中,table.copy()存储了表信息,最终调用到实现类CatalogTableImpl,其父类的构造函数有分区信息。表中存储了相应的分区信息,SQL最终操作的都是表,所以都是从这取的分区信息,注意这是一个StringList。

2024-02-29 19:47:55 645

原创 Range-Encoded Bit-Slice Index

算法使用Bit-Sliced Range-Encoded BitMap算法,在基础bitmap的基础上,添加了范围查询和Bit-Sliced范围查询用来弥补bitmap范围查询能力弱的问题;Bit-Sliced用来降低索引Key值的存储数量,进而降低整体索引的空间占用BSI就是Bit-Sliced,即将数值按位切分表示,用更少的内容代表更多的数据,通常有十进制方式和二进制方式,二进制方式更佳。

2024-02-29 09:43:07 889

原创 Spark Bloom Filter Join

Bloom Filter Join,或者说Row-level Runtime Filtering(还额外有一条Semi-Join分支),是Spark 3.3对运行时过滤的一个最新补充之前运行时过滤主要有两个:动态分区裁剪DPP(开源实现)、动态文件裁剪DFP(Databricks实现),两者都能有效减少数据源层面的Scan IOBloom Filter Join的主要优化点是在shuffle层,通过在join shuffle前对表进行过滤从而提高运行效率。

2024-02-28 10:15:04 1200

原创 Iceberg Flink FLIP-27实现

前面步骤完成后是把所有的分片全部放在了assigner当中,没有进行分配。分配在AbstractIcebergEnumerator接口当中定义,这是Iceberg当中enumerator的最上层父类,直接实现Flink的SplitEnumeratorSplitEnumerator定义了handleSourceEvent接口,负责处理来自读取器的自定义消息,有SourceCoordinator调用LOG.debug(subtask,

2024-02-28 09:37:56 1166

原创 Flink动态分区裁剪

静态分区裁剪的原理跟谓词下推是一致的,只是适用的是分区表,通过将where条件中的分区条件下推到数据源达到减少分区扫描的目的动态分区裁剪应用于Join场景,这种场景下,分区条件在join的一侧,另一侧无法应用条件进行裁剪静态分区裁剪是静态的规则优化下推,动态分区裁剪是运行时过滤,通过对有条件一侧的表进行过滤,提取结果中的分区数据,然后传递到另一侧的表中进行数据过滤。

2024-02-27 20:38:48 1042

原创 Iceberg小文件合并

Iceberg提供了Actions来进行小文件合并,需要手动调用执行这个任务目前仅仅将小文件进行了合并生成大文件,但旧的文件并没有删除,也就是文件反而变多了功能一路调用,到RowDataRewriter类中的rewriteDataForTasks这里构建Flink任务,核心是RewriteMap的算子,其map方法如下,本质是读取并写入数据注意,这边小文件合并任务是多并发的,目前flink的并发度这里不提供配置,所以用的是flink的parallelism.default的值。

2024-02-27 20:26:06 637

原创 hudi索引

索引实现的基类,核心方法是两个:tagLocation和updateLocation后续有不同的子类实现具体的索引。

2024-02-27 20:22:59 926

原创 FLIP27-Source

Source通常有两个核心的部件:当前的Source接口就是用来创建SplitEnumerator和Reader的工厂类。

2024-02-27 20:16:24 961

原创 DolphinScheduler

可以看到时间的具体处理在WorkflowExecuteRunnable的call,根据事件的状态不同,做分支处理,核心三个步骤:buildFlowDag、initTaskQueue、submitPostNode。转换之后,run方法中的最后一步就是执行ProcessInstance,这里是发送一个执行的事件请求,具体的操作在WorkflowExecuteRunnable。前面提到,点击执行后整个流程走到发送WorkflowEvent事件这一步,之后就是基于事件进行处理,这里有一个循环调用迭代处理的过程。

2024-02-27 20:03:55 887

原创 Flink Catalog

按照SQL的解析处理流程在Parse解析SQL以后,进入执行流程——executeInternal。其中有个分支专门处理创建Catalog的SQL命令创建Catalog会去全包查找对应的CatalogFactory的子类,然后使用配置的子类构建这里注意,上面的步骤只查询classpath下的类,像HiveCatalog这种外置增加的,在这个步骤里找不到,会抛出NoMatchingTableFactoryException异常之后继续其他步骤处理来获取。

2024-02-27 19:59:13 1134

原创 计算引擎CodeGen

解释执行:生成的是非机器码,需要通过中间的解释器翻译成机器码然后执行,一行一行读取翻译,所以执行效率低编译执行:直接生成机器码,执行效率高,但编程难度也高,而且跨平台能力差。

2023-08-05 16:00:24 422

原创 Flink Adaptive Batch Scheduler

自适应批调度器,即自动推导设置作业并行度,无需用户手动设置作业并行度,由Flink根据用户设置的期望及作业执行情况,自动设置作业的并行度。

2023-08-05 15:52:01 210

原创 DolphinScheduler作业流程

之后第一个任务按正常流程走完,由WorkflowExecuteRunnable的handleEvents处理结束事件,到TaskStateEventHandler当中,走回WorkflowExecuteRunnable的taskFinished,成功和失败都有submitPostNode的调用,这次的输入是结束的任务。submitPostNode当中有工作流任务拆分的过程,在submitPostNode当中,解析DAG图,由于第一次进来parentNodeCode,所以这里只获取到第一个任务。

2023-08-05 15:46:02 322

原创 Flink Catalog

Flink提供了基础的Catalog接口,自定义Catalog实现此接口即可此外还有一个CatalogFactory接口,用于创建Catalog。

2023-08-03 21:07:31 257

原创 Iceberg读取过程

与写入过程类似,IcebergTableSource对标IcebergTableSink,produceDataStream对标consumeDataStream,在Flink SQL的同一处理流程中产生这里稍微特殊的是,由于Flink的Source提供了两版实现,所以produceDataStream也根据条件内部有两条分支。FLIP27是Flink新的Source结构以传统的DataStream追踪,通过FlinkSource的build构建,分批和流两种场景。

2023-08-03 21:02:15 191

原创 Flink优化规则-JoinConditionEqualityTransferRule

Flink扩展的规则,是做相等条件传递的,目前只在批执行模式下有应用l_a = r_b and l_a = r_c的条件推导出 r_b = r_c,同时l_a = r_b和l_a = r_c只会保留一个。

2023-08-03 20:50:22 86

原创 Flink On Yarn文件分发

配置就是用于上传第三方文件到yarn上的。

2023-08-03 20:45:24 186

原创 Iceberg写入接口

Iceberg写数据文件时的类调用关系:TaskWriter -> BaseRollingWriter -> FileWriter -> FileAppender -> Iceberg封装的文件类型实现类 -> 具体文件类型的实现类。

2023-05-26 18:29:09 234

原创 Iceberg写入过程

Iceberg的写入数据流程

2023-04-09 17:02:18 1019

原创 IcebergTableSource

Flink IcebergTableSource

2023-03-11 10:00:57 209

原创 Checkpoint源码解析

Flink Checkpoint

2023-03-08 19:46:08 242

原创 watermark详解

Flink Watermark

2023-03-08 19:18:14 818

原创 Spark优化规则-InferFiltersFromConstraints

Spark条件推导优化规则解析

2023-01-21 13:31:14 152

原创 Calcite基础

Calcite结构基础

2023-01-08 18:03:53 476

原创 Flink优化器基础

Flink优化器基础

2023-01-08 17:52:40 250

原创 Rel转换

Flink SQL转换relNode过程

2022-11-24 20:27:17 658

原创 Parse解析

Flink SQL parse解析源码

2022-11-15 18:49:30 1177

原创 Flink-SQL基础部分

Flink-SQL的基础流程简析

2022-11-04 21:17:58 1065

原创 细粒度资源管理

Flink细粒度资源管理

2022-09-02 19:09:32 728

原创 声明式资源管理

Flink声明式资源管理

2022-09-02 18:57:38 550

原创 Flink类加载

1.配置以下三个是主要的加载方式配置,其他还有一些插件加载和加载异常处理的配置1、classloader.resolve-orderchild-first(默认)、parent-first。从业务代码加载类时的策略,即先检查业务包还是按通常的java加载机制2、classloader.parent-first-patterns.default指定哪些类首先通过父类加载器解析,默认主要是java、flink、log4j一系列的3、classloader.parent-first-patterns.

2022-05-14 10:41:55 2084

原创 Flink窗口

Flink窗口

2022-04-17 10:59:52 2293

原创 Flink语法扩展--SqlRichExplain为例

SqlRichExplain语法扩展示例

2022-04-17 10:47:46 2619 2

原创 Adaptive调度器

Adaptive调度器

2022-04-11 17:37:52 886

原创 JdbcSink 简析

1、JdbcSink用于DataStream增加Jdbc的Sink输出,主要两个接口:sink()和exactlyOnceSink()。其中exactlyOnceSink()是13版本新增的支持事务性的接口,本次主要介绍sink()接口。public static SinkFunction sink(String sql,JdbcStatementBuilder statementBuilder,JdbcExecutionOptions executionOptions,JdbcConnect

2021-07-25 10:48:46 2834 1

原创 Flink Sort-Shuffle读简析

Flink Sort-Shuffle读简析

2021-07-25 09:35:25 491 1

原创 Flink Sort-Shuffle写简析

Flink Sort-Shuffle写简析

2021-07-21 23:26:36 803 2

Row-level Runtime Filters in Spark

Row-level Runtime Filters in Spark

2024-02-29

Flink FFA 2022 Flink在米哈游的应用实践

Flink FFA 2022 Flink在米哈游的应用实践

2024-02-29

Flink FFA Apache Flink实时计算在美的多业务场景下的应用与实践

Flink FFA Apache Flink实时计算在美的多业务场景下的应用与实践

2024-02-29

Flink FFA Flink Towards Streaming Data Warehouse

Flink FFA Flink Towards Streaming Data Warehouse

2024-02-29

Flink FFA 2022

Flink FFA 2022开场

2024-02-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除