基于 FLINK SQL 的实时数据打宽

Posted 宝哥大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于 FLINK SQL 的实时数据打宽相关的知识,希望对你有一定的参考价值。

一、数据打宽

1.1、ETL架构

1.2、数据打宽

1.3、利⽤ Flink SQL 打宽实时数据

二、双流 Join & 区间 Join

2.1、双流 Join (Regular Join)

SELECT i.*, c.*
FROM impressions as i JOIN clicks as c
ON i.id = c.impression_id

  • 支持 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN
  • 语法, 语义 均和传统批 SQL 一致
  • 左右流都会触发结果更新
  • 状态持续增长,一般结合 state TTL 使用

2.2、区间 Join (Interval Join)


  • 支持 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN
  • 左右流都会触发结果更新
  • State 自动清理,根据时间区间保留数据
  • 输出流保留时间属性

三、时态表 Join

3.1、时态 (Temporal)表 VS 临时(Temporary)表

3.2、时态(Temporal )表 概念

3.3、时态表 Join

  • 支持 INNER JOIN, LEFT JOIN
  • 只有左流都会触发结果更新
  • 输出流保留时间属性

3.3.1、Temporal Join Lookup DB

  • 具备 lookup 的能力的外部系统
  • 典型的 connector 有 HBase,JDBC
  • 自定义connector需实现 LookupTableSource
  • 支持 Async IO 和 Cache 提升lookup效率

另外社区即将支持 HBase Async IO lookup https://issues.apache.org/jira/browse/FLINK-20460

3.3.2、Flink 版本表

3.3.3、Temporal Join 版本表

3.3.4、Temporal Join 版本表(versioned view)

3.3.5、Temporal Join 版本表(upsert-kafka)

3.3.6、Temporal Join Hive

3.3.6.1、Temporal Join (最新 Hive 分区)

3.3.6.2、Temporal Join (最新 Hive 表)

3.3.6.3、Temporal Join (最新分区 VS 最新表)

四、案例

4.1、Temporal Join Versioned Table

关注我的公众号【宝哥大数据】, 更多大数据干货

参考:
https://www.bilibili.com/video/BV1Ap4y1h7j1?from=search&seid=16517504794128610121&spm_id_from=333.337.0.0
完整课程及PPT下载:https://flink-learning.org.cn/activity/detail/1e05a08375cb70d1d6cdc6886c47f03d

以上是关于基于 FLINK SQL 的实时数据打宽的主要内容,如果未能解决你的问题,请参考以下文章

基于 Flink SQL CDC 的实时数据同步方案

基于 Flink SQL CDC的实时数据同步方案

个推基于Flink SQL建设实时数仓实践

OPPO数据中台之基石:基于Flink SQL构建实数据仓库

flink1.12 sql向redis实时写数据

Flink实时统计入MySQL