奇技 · 指南
今天小编为大家分享一篇关于Flink SQL的特性、场景与产品化的文章
Flink SQL背景

Flink SQL是当今大数据实时计算领域最主流的开源引擎Flink的高级用户接口,通过熟悉Flink SQL的特性和场景,不用了解太多大数据与实时计算复杂概念,即可使用大数据实时计算技术为业务赋能。
流计算引擎 | 准确性 | 容错机制 | 延时 | 吞吐量 | 易用性 | 扩展性 | 业界使用 |
Flink | Exactly-once | 轻 | ms | 高 | 高 | 好 | 高 |
Spark Streaming | Exactly-once | 重 | s | 高 | 中 | 好 | 中 |
Storm | At-least-once | 重 | ms | 低 | 低 | 一般 | 低 |
2
Flink SQL特性
DDL支持,支持catalog,database,table,view和function这些对象的create、drop和alter能力,支持SQL hints给执行计划传递额外信息,支持explain查看相应的SQL的物理执行计划。
Function支持,提供了很多的内置函数,日常能用到的业务无关的函数基本都提供了,比较函数、逻辑函数、数学函数、字符串函数、类型转换函数、分组函数、聚合函数等。
UDF支持,支持四种用户自定义函数,标量函数、表函数、聚合函数、表聚合函数。 
时间语义支持,支持处理时间、摄入时间和事件时间,扩充的时间语义是对传统SQL的丰富,特别是事件时间的支持,能够更好的支持业务逻辑贴近业务实际。
时间窗口支持,支持翻滚窗口、滑动窗口和会话窗口,对窗口的表达也是对传统SQL的扩充,消息只会在一个翻滚窗口中出现,可能在多个滑动窗口中出现,只在一个会话窗口中出现。
模式匹配支持,因为Flink本身提供复杂事件处理的CEP库,所以也扩充了SQL中模式匹配的语义,通过SQL语言就可以在流计算中实现复杂事件处理。
内嵌connector,FlinkSQL内嵌很多connector来和外部数据源连接,常用的包括Kafka,HBase,ES,JDBC以及FileSystem,并且FileSystem支持多个文件格式,特别是对parque和orc的支持,并提供datagen,print,blackhole进行调试。
3
Flink SQL场景
作为Flink SQL的底座,Flink本身有着丰富的使用场景,Flink SQL基本继承了Flink的使用场景,这里着重介绍三种Flink SQL的使用场景。
数据同步


批流融合

谓所批流融合,指的在一个流计算过程中同时集成了批计算的过程。典型场景如实时数仓中的维度扩充过程,事实表的数据作为流数据会持续不断进来,但作为用户信息或者商品品类表等维度信息可能存在于MySQL,需要在计算的过程中将事实表的数据与MySQL中的信息关联,实现维度扩充。
HIVE整合
技术栈支持,Flink SQL支持使用HIVE Metastore作为元数据管理中心,支持在Flink SQL中使用HIVE SQL的DDL方言,支持在Flink SQL中使用HIVE的内嵌函数以及UDF。
4
Flink SQL产品化
功能增强
静态资源加速,通过静态资源加速功能,作业提交的速度可以从分钟级提高到秒级。
细粒度并发设置,改变Flink SQL本身只支持全局设置并发,可以针对算子设置并发。
数据源格式适配,维护开发社区缺失的数据源Format,简化司内业务处理。
Kafka版本支持,Flink 1.11版本放弃对Kafka 08&09的支持,继续维护开发司内09版本。
函数状态提升,维护开发司内Flink SQL的UDF版本,支持对Flink状态的访问能力。
产品化
作业前,在开发Flink SQL作业之前,需要做两件事,即建表和创建UDF,表的定义在元数据管理中,UDF的定义在UDF管理中,通过表的定义和UDF的定义,有利于实现表资源和UDF资源的复用以及SQL作业开发的可视化。
开发作业,开发作业即依托于表的关系代数运算以及UDF的业务表达来实现,不建议写非常复杂的SQL语句,可通过SQL语句的拆分,比如通过多个view的创建,来减少SQL语句的复杂度。
通过奇麟提交Flink SQL作业,对用户屏蔽了客户端搭建、依赖管理等等繁琐流程,用户只需点点点就可以完成作业的开发,奇麟的地址为http://qilin.qihoo.net/,欢迎使用。
kubernetes之flannel 网络分析
一种通过云配置处理应用权限弹框的方案
360Stack裸金属服务器部署实践


360技术公众号
技术干货|一手资讯|精彩活动




