本文总结下 Presto Connectors 的 SPI 实现。在 Presto 中,UDF、EventListener、DataTypes、ParameterTypes、Access Control、Resource Group 以及 Connector
都是通过插件机制实现的。
Flink-FLIP-188: Introduce Built-in Dynamic Table Storage
动态表:全新的 Flink 内置存储。
Flink Dynamic Table 可以理解为一套流批一体的存储,并无缝对接 Flink SQL 。原来 Flink 只能读写像 Kafka 、 HBase 这样的外部表,现在用一套 Flink SQL 语法就可以像原来创建源表和目标表一样,创建一个 Dynamic Table。流式数仓的分层数据可以全部放到 Flink Dynamic Table 中,通过 Flink SQL 就能实时地串联起整个数仓的分层,既可以对 Dynamic Table 中不同明细层的数据做实时查询和分析,也可以对不同分层做批量 ETL 处理。
最终,利用 Flink CDC 、Flink SQL 、Flink Dynamic Table 就可以构建一套完整的流式数仓,实现实时离线一体化的体验。
目前,作为一个独立的开源项目 flink-table-store 开发中,该功能预计在 Flink 1.15 中发布。
Flink-FLIP-150: Introduce Hybrid Source
在实践中,尤其在需要数据回溯的场景下,许多 Flink 作业需要按顺序从多个数据源中读取数据:
- CDC:用户可以将数据快照存储在 HDFS/S3 ,数据的更新日志存储在数据库 binlog 或 Kafka 中
- 机器学习特征回填:当向模型中添加新特性时,需要从历史到现在的原始数据计算该特性。在大多情况下,历史数据和实时数据分别存储在两种不同的存储系统中,如 HDFS 和 Kafka
Mac单机安装zeppelin
Zeppelin 是基于 Web 的交互式数据分析 notebook ,支持 SQL 、 Scala 、 Python 等语言。
Zeppelin 通过插件化的 Interpreter 来解析用户提交的代码,并将其转化到对应的后端(计算框架、数据库等)执行,支持 angular 、beam 、 bigquery 、cassandra 、es 、HBase 、 influxdb 、Flink 、Spark 等引擎。
本机搭建一个 Zeppelin 环境,方便在界面上写简单的代码或 sql 进行测试任务。
Flink-Hudi-构建流式数据湖平台
Flink 和 Hudi 的集成使用。
在查询时确认数据的 Schema ,湖存储成本低、灵活性高,非常适用于各种查询场景的中心化存储;
基于云服务兴起及成熟的对象存储,在云上构建存算分离的架构;
通过快照隔离,实现基础的 ACID 事务;
对接不同的查询引擎,实现各自的查询分析场景,实现湖仓一体的架构;
Test: Docker 拉起 MySqlContainer 唯一数据库实例
我们在进行大数据组件相关测试时,通常需要先在外部部署测试数据源,显得有些麻烦。在代码中拉起 docker container ,创建一个唯一干净的数据源环境,会方便许多。
本文以 MySql 数据源为例,说明下在单测中拉起 MySqlContainer ,创建唯一数据库实例,执行 sql 脚本等过程。
Flink-CDC-增量快照读取算法
Flink CDC 2.0 的设计方案,借鉴了 Netflix 的 DBLog paper 实现全程无锁,并基于 Flink FLIP-27 Source 实现水平扩展,并支持全量阶段 checkpoint 。
Flink-FLIP-27: Refactor Source Interface
FLIP-27: Refactor Source Interface ,是对 SourceFunction 的重构,旨在解决 SourceFunction
中存在的几个痛点。SplitEnumerator
负责发现并 split,SourceReader
负责读取 split 的实际数据。也是批流一体 API 推进的产物。