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

本文涉及的产品
实时计算 Flink 版,5000CU*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' -- 定义过多久时间触发一次写入
);
AI 代码解读

当有一组数据到达同一个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轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
打赏
0
0
1
1
36030
分享
相关文章
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
SQL Server 以其卓越的易用性和丰富的软件生态系统,在数据库行业中占据了显著的市场份额。作为一款商业数据库,外部厂商在通过解析原生日志实现增量数据捕获上面临很大的挑战,DTS 在 SQL Sever 数据通道上深研多年,提供了多种模式以实现 SQL Server 增量数据捕获。用户可以通过 DTS 数据传输服务,一键打破自建 SQL Server、RDS SQL Server、Azure、AWS等他云 SQL Server 数据孤岛,实现 SQL Server 数据源的流动。
104 0
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是为应对传统数据处理框架中流批分离的问题而诞生的,它融合了SQL的简洁性和Flink的强大流批处理能力,降低了大数据处理门槛。其核心工作原理包括生成逻辑执行计划、查询优化和构建算子树,确保高效执行。Flink SQL 支持过滤、投影、聚合、连接和窗口等常用算子,实现了流批一体处理,极大提高了开发效率和代码复用性。通过统一的API和语法,Flink SQL 能够灵活应对实时和离线数据分析场景,为企业提供强大的数据处理能力。
331 26
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
2109 73
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
|
4月前
|
Flink SQL Deduplication 去重以及如何获取最新状态操作
Flink SQL Deduplication 是一种高效的数据去重功能,支持多种数据类型和灵活的配置选项。它通过哈希表、时间窗口和状态管理等技术实现去重,适用于流处理和批处理场景。本文介绍了其特性、原理、实际案例及源码分析,帮助读者更好地理解和应用这一功能。
260 14
【开发者评测】实时计算Flink场景实践和核心功能体验测评获奖名单公布!
【开发者评测】实时计算Flink场景实践和核心功能体验测评获奖名单公布!
135 1
SQL中,可以使用 `ORDER BY` 子句来实现排序功能
【10月更文挑战第26天】SQL中,可以使用 `ORDER BY` 子句来实现排序功能
281 6
实时计算Flink场景实践和核心功能体验
本文详细评测了阿里云实时计算Flink版,从产品引导、文档帮助、功能满足度等方面进行了全面分析。产品界面设计友好,文档丰富实用,数据开发和运维体验优秀,具备出色的实时性和动态扩展性。同时,提出了针对业务场景的改进建议,包括功能定制化增强、高级分析功能拓展及可视化功能提升。文章还探讨了产品与阿里云内部产品及第三方工具的联动潜力,展示了其在多云架构和跨平台应用中的广阔前景。
179 9
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。

相关产品

  • 实时计算 Flink版
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等