71、Flink 的 Hybrid Source 详解
创始人
2025-01-08 01:35:18
0
Hybrid Source
1.概述

Hybrid Source 解决了从异构数据源顺序读取输入以生成单个输入流的问题。

示例:从 S3 读取前几天的有界输入,然后使用 Kafka 的最新无界输入,当有界文件输入完成而不中断应用程序时 Hybrid Source 会从 FileSource 切换到 KafkaSource。

在 Hybrid Source 出现之前,需要创建一个具有多个源的拓扑结构,并由用户定义切换机制;使用 HybridSource 之后,从 DataStream API 的角度看,多个源在 Flink 作业图中显示为单个源。

需要依赖如下:

     org.apache.flink     flink-connector-base     1.19.0  
2.下一个源的起始位置

要在一个 Hybrid Source 中排列多个源,除最后一个源外的所有源都需要有界;因此通常需要为源分配一个开始和结束位置。

a)固定起始位置

示例:从文件中读取到预先确定的切换时间,然后继续从 Kafka 中读取,每个源都覆盖了预先已知的范围,可以像直接使用一样预先创建包含的源。

long switchTimestamp = ...; // derive from file input paths  FileSource fileSource =   FileSource.forRecordStreamFormat(new TextLineInputFormat(), Path.fromLocalFile(testDir)).build();  KafkaSource kafkaSource =           KafkaSource.builder()                   .setStartingOffsets(OffsetsInitializer.timestamp(switchTimestamp + 1))                   .build();  HybridSource hybridSource =           HybridSource.builder(fileSource)                   .addSource(kafkaSource)                   .build(); 
b)动态其实位置

示例:文件源需要读取的数据量很大,可能比下一个源可用的保留时间更长,切换需要在 “当前时间-X” 发生。

因此要将下一个源的启动时间设置为切换时间,需要从以前的文件枚举器中转移结束位置,以便通过实现 SourceFactory 来延迟构建KafkaSource。

注意:枚举器需要支持获取结束时间戳。

FileSource fileSource = CustomFileSource.readTillOneDayFromLatest();  HybridSource hybridSource =     HybridSource.builder(fileSource)         .addSource(             switchContext -> {               CustomFileSplitEnumerator previousEnumerator =                   switchContext.getPreviousEnumerator();                              // how to get timestamp depends on specific enumerator               long switchTimestamp = previousEnumerator.getEndTimestamp();                              KafkaSource kafkaSource =                   KafkaSource.builder()                       .setStartingOffsets(OffsetsInitializer.timestamp(switchTimestamp + 1))                       .build();                              return kafkaSource;             },             Boundedness.CONTINUOUS_UNBOUNDED)         .build(); 

相关内容

热门资讯

据悉!九九山城万州版辅助器,丰... 据悉!九九山城万州版辅助器,丰城双剑新版最强高分攻略(总是是真的器)-哔哩哔哩1、操作简单,无需丰城...
据了解!兄弟十三水辅助,吉安中... 据了解!兄弟十三水辅助,吉安中至小程序微信辅助(原来有挂器)-哔哩哔哩吉安中至小程序微信辅助辅助器是...
为了进一步!浙江温州游戏辅助器... 为了进一步!浙江温州游戏辅助器,四川换三张辅助器(一直存在有app)-哔哩哔哩1、游戏颠覆性的策略玩...
来临!微新欢乐卡五星辅助,心悦... 来临!微新欢乐卡五星辅助,心悦海南苹果版辅助(竟然是有器)-哔哩哔哩在进入心悦海南苹果版辅助软件靠谱...
此事引发广泛关注!新二号辅助软... 此事引发广泛关注!新二号辅助软件下载,闲来辅助神器免费版(好像真的有器)-哔哩哔哩1、新二号辅助软件...
连日来!白金岛字牌集插件,广丰... 连日来!白金岛字牌集插件,广丰中至510k辅助(其实是有插件)-哔哩哔哩在进入白金岛字牌集插件软件靠...
为切实保障!衢州都莱破解器,蜀... 为切实保障!衢州都莱破解器,蜀山挂件辅助(确实是真的挂)-哔哩哔哩1、衢州都莱破解器有没有辅助教程、...
突发!兴动助手脚本有辅助,微信... 突发!兴动助手脚本有辅助,微信小程序多乐辅助下载(真是是真的软件)-哔哩哔哩1、下载好微信小程序多乐...
一直以来!广东雀神智能插件使用... 一直以来!广东雀神智能插件使用免费,菠萝辅助器(本来是有软件)-哔哩哔哩一直以来!广东雀神智能插件使...
来临!闽游游戏辅助器,微乐富足... 来临!闽游游戏辅助器,微乐富足和靠谱吗(真是存在有app)-哔哩哔哩1、在微乐富足和靠谱吗插件功能辅...