惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
S
SegmentFault 最新的问题
Jina AI
Jina AI
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
WordPress大学
WordPress大学
爱范儿
爱范儿
博客园 - Franky
量子位
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网

博客园 - LarkMidTable

前端微信群 LarkMidTable 2026年2月份 修改的bug记录 Doris的单机安装 1.vue的简介及常用指令 镜像源参考和使用 Langchain调用LLM Langchain的监控工具 Langchain的底层原理 Langchain是什么? 3.AI大模型私有化部署和微调 2.AI大模型项目实战 1.AI 大模型的基本概念 AI Agent的概述 一: AI 的一些基本概念 DockerInsight 数据中台整体规划与建设方案 Flink读取Kafka数据下沉到HDFS 兄弟,干了这杯Flink SQL !!! 电商 实时数仓 简易架构图
美团 基于Flink 实时数仓 概述
LarkMidTable · 2021-06-07 · via 博客园 - LarkMidTable

1.实时数仓概述

1.1实时数仓产生背景

传统的OLTP数据库: 面向事务处理、面向业务、进行增删改查、反映最新状态

数据仓库: 面向主题、集成、相对稳定、反应历史变化

1.2离线数仓架构

离线数仓

1.3实时数仓架构

1.3.1实时数仓的Lambda架构

lambda架构

1.3.2实时数仓的kappa架构

kappa架构

1.3.3实时数仓的OLAP变体

olap架构

2.基于Flink实现典型的ETL场景

2.1维表join-预加载维表

方法1:将维表加载到内存关联 (DB数据库)

实现RichFlatMapFunction,在open()方法中读取数据库

代码实现: 关注 LarkMidTable 交流

方法2:利用Flink的分布式缓存 (文件)

实现通过env.registerCachedFile注册文件,在open()方法中进行获取

代码实现: 关注 LarkMidTable 交流

方法3:将维表存入到redis中 (nosql数据库)

代码实现: 关注 LarkMidTable 交流

方法4:利用Flink的广播变量(实时流)

代码实现: 关注 LarkMidTable 交流

方法5:创建临时表,使用FlinkSql进行清洗

代码实现: 关注 LarkMidTable 交流

2.2双流join

方法1:Regular join,FlinkSQL构造两个表,离线批处理,保持全量的数据。

Flink支持:inner join ,left outer join, right outer join, full outer join

代码实现: 关注 LarkMidTable 交流

方法2:intderval join,FlinkSQL根据业务规则,清除数据,

例如:

leftKeyedStream
.intervalJoin(rightKeyedStream)
// 时间间隔,设定下界和上界
.between(Time.minutes(-10),Time.seconds(0))
// 不包含下界
//.lowerBoundExclusive()
// 不包含上界
//.upperBoundExclusive()
// 自定义ProcessJoinFunction 处理Join到的元素
.process(ProcessJoinFunction)

代码实现: 关注 LarkMidTable 交流

方法3:window join,FlinkSQL根据窗口来进行划分数据,清理数据

stream.join(otherStream)
  .where(<KeySelector>)
  .equalTo(<KeySelector>)
  .window(<WindowAssigner>)
  .apply(<JoinFunction>)

代码实现: 关注 LarkMidTable 交流

# 技术交流

一个人走的很快,一群人走的更远。

扫描下面的QQ二维码加入Lark的数据中台开源社区,并为你提供全程免费服务,你也可以与其他伙伴交流大数据技术,如果觉得项目不错,可以star关注,LarkMidTable团队将十分感谢您的关注!

QQ群1群【678097205】已满

微信公众号 【LarkMidTable】

关注官方微信公众号,回复加群,会发送社区微信群二维码,扫描二维码可加入群聊!