Flink编程模型与API(二)

DataSources模块定义了DataStream API 中数据输入操作,Flink中内置了很多数据源Source,例如:文件数据源、Socket数据源、集合数据源,同时也支持第三方数据源,例如:Kafka数据源、自定义数据源,下面分别使用DataStream API进行一一演示。

File Source

以上文件Source除了读取Text数据之外,还可以读取avro、csv、json、parquet格式对应文件,具体API可以参照官网:https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/connectors/datastream/formats/overview/。

Socket Source

Flink读取Socket数据在前几个小节中已经演示过,这里不再读取Socket中的数据。Socket Source常用于程序测试。

集合 Source

Flink可以读取集合中的数据得到DataStream,这里我们自定义POJO创建StationLog对象来形成集合数据。

StationLog对象Java代码如下:

Kafka Source

读取Kafka中Value数据

读取Kafka中Key、Value数据

自定义 Source

对于一些其他的数据源,我们也可以实现自定义Source进行实时数据获取。自定义数据源有两种实现方式:

通过实现SourceFunction接口来自定义无并行度(也就是并行度只能为1)的Source。

通过实现ParallelSourceFunction 接口或者继承RichParallelSourceFunction 来自定义有并行度的数据源。

无论是那种接口实现方式都需要重写以下两个方法:

run():大部分情况下都需要在run方法中实现一个循环产生数据,通过Flink上下文对象传递到下游。

cancel():当取消对应的Flink任务时被调用。

SourceFunction接口实现

实现SourceFunction 接口实现无并行度的自定义Source,java代码和Scala代码分别如下

ParallelSourceFunction接口实现

相关推荐
A hao12 分钟前
HDR LED显示屏工作原理:高动态范围显示技术解析
大数据·图像处理·人工智能
回眸&啤酒鸭33 分钟前
【回眸】搞钱灵感——AI 数字人口播博主自动化运营
大数据·人工智能·自动化
ClickHouseDB33 分钟前
ClickHouse 26.6 版本发布说明
数据库
Wang's Blog36 分钟前
Java框架快速入门:深入MyBatis-Plus高级DML操作(ID策略·逻辑删除·乐观锁)
java·数据库·mybatis
AC赳赳老秦1 小时前
Excel 动态仪表盘制作:用 OpenClaw 自动处理数据、生成交互式图表并实时更新仪表盘
大数据·服务器·后端·测试用例·excel·deepseek·openclaw
TTBIGDATA10 小时前
【Ambari Plus】14.Hue 安装
大数据·hadoop·ambari·hdp·hue·cdh·bigtop
AI创界者10 小时前
零基础上手!ComfyUI + LTX-2.3 图生视频完整工作流搭建与调优指南(附避坑细节)
大数据·人工智能
有Li10 小时前
基于扩散模型的超声计算机断层成像实现肌肉骨骼组织高保真三维重建文献速递/基于多模态的医学影像分割与理解
大数据·深度学习·文献·医学生
weishuangyun12311 小时前
2026小程序开发全流程:从平台选择到功能定制的完整白皮书
大数据
记忆停留w11 小时前
从单体到微服务:Redis 协同 MySQL、Milvus、MinIO 搭建企业级RAG/AI Agent脚手架架构
大数据·人工智能·redis·微服务·ai·架构·milvus