京东BI工程师杨尚昂:FlinkSQL解决实时维度建模两大难题

版权申诉
0 下载量 88 浏览量 更新于2024-07-05 收藏 1.6MB PDF 举报
在2021年的大数据计算和实时计算领域的重要会议上,京东BI工程师杨尚昂在DataFunSummit实时维度建模应用论坛上探讨了FlinkSQL在实时维度建模过程中的关键挑战和解决方案。会议重点关注了两个主要问题:实时多流全量关联和实时流全量分组计算。 问题一:实时多流全量关联是实时场景中常见的技术难题,涉及到实时数据流从过去到现在的时间范围([0,now))的全量关联。然而,由于内存状态存储空间有限,传统的内存解决方案无法满足这种需求。此外,即使考虑使用RocksDB这样的持久化存储,其性能也可能无法满足实时计算的要求。解决这个问题需要巧妙地设计查询策略或者利用FlinkSQL的特性来实现数据的高效缓存和处理。 问题二:实时流全量分组计算同样面临挑战,需要处理大规模实时数据的聚合和分组操作。FlinkSQL能否直接通过简单的SQL语句完成这些任务,取决于数据的处理策略以及对FlinkSQL特性的充分利用。如何在保持实时性的同时,兼顾历史数据的全量获取,是需要深入研究和优化的。 在实际应用中,难点主要集中在三个方面:首先,如何获取历史全量数据,这需要灵活的数据源管理与集成;其次,如何提升处理性能,这涉及到数据处理算法的选择、优化和FlinkSQL的性能调优;最后,简化开发难度和降低维护成本是另一个挑战,通过组件化设计和面向应用编程的方式,FlinkSQL可以提供一个更直观的接口,使得开发者能更容易地表达和理解复杂的计算逻辑。 解决方案方面,提出采用组件化设计,将复杂的计算逻辑抽象成模块化的组件,用户可以通过FlinkSQL编写简洁的代码来实现,从而提高开发效率,降低出错率,并且便于后续的维护和扩展。这种设计方式允许开发者专注于业务逻辑,而将底层的复杂性封装起来,使得FlinkSQL成为实时维度建模的强大工具。通过这样的方法,FlinkSQL能够在实时维度建模中发挥重要作用,助力企业处理大规模实时数据,提升业务决策的时效性和准确性。
2020-07-27 上传
第一章 整体介绍 2 1.1 什么是 Table API 和 Flink SQL 2 1.2 需要引入的依赖 2 1.3 两种 planner(old & blink)的区别 4 第二章 API 调用 5 2.1 基本程序结构 5 2.2 创建表环境 5 2.3 在 Catalog 中注册表 7 2.3.1 表(Table)的概念 7 2.3.2 连接到文件系统(Csv 格式) 7 2.3.3 连接到 Kafka 8 2.4 表的查询 9 2.4.1 Table API 的调用 9 2.4.2 SQL 查询 10 2.5 将 DataStream 转换成表 11 2.5.1 代码表达 11 2.5.2 数据类型与 Table schema 的对应 12 2.6. 创建临时视图(Temporary View) 12 2.7. 输出表 14 2.7.1 输出到文件 14 2.7.2 更新模式(Update Mode) 15 2.7.3 输出到 Kafka 16 2.7.4 输出到 ElasticSearch 16 2.7.5 输出到 MySql 17 2.8 将表转换成 DataStream 18 2.9 Query 的解释和执行 20 1. 优化查询计划 20 2. 解释成 DataStream 或者 DataSet 程序 20 第三章 流处理中的特殊概念 20 3.1 流处理和关系代数(表,及 SQL)的区别 21 3.2 动态表(Dynamic Tables) 21 3.3 流式持续查询的过程 21 3.3.1 将流转换成表(Table) 22 3.3.2 持续查询(Continuous Query) 23 3.3.3 将动态表转换成流 23 3.4 时间特性 25 3.4.1 处理时间(Processing Time) 25 3.4.2 事件时间(Event Time) 27 第四章 窗口(Windows) 30 4.1 分组窗口(Group Windows) 30 4.1.1 滚动窗口 31 4.1.2 滑动窗口 32 4.1.3 会话窗口 32 4.2 Over Windows 33 1) 无界的 over window 33 2) 有界的 over window 34 4.3 SQL 中窗口的定义 34 4.3.1 Group Windows 34 4.3.2 Over Windows 35 4.4 代码练习(以分组滚动窗口为例) 36 第五章 函数(Functions) 38 5.1 系统内置函数 38 5.2 UDF 40 5.2.1 注册用户自定义函数 UDF 40 5.2.2 标量函数(Scalar Functions) 40 5.2.3 表函数(Table Functions) 42 5.2.4 聚合函数(Aggregate Functions) 45 5.2.5 表聚合函数(Table Aggregate Functions) 47