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接口实现

相关推荐
Nontee44 分钟前
设计模式:模板方法与策略,从“每个字都认识“到能说清它们在干嘛
java·数据库·设计模式
远航计算机1 小时前
职业技能培训机构如何利用QClaw+Skills做豆包GEO:知识库搭建×内容创作×效果监测的完整实操手册
大数据·人工智能·自动化·aigc·火山引擎
IanSkunk1 小时前
视光中心承接近视防控需求,核心是先把服务流程做成标准化工程
大数据
眞bilibili1 小时前
带团队后的日常思考(十七)
数据库
SEO_juper1 小时前
用Google Search Console数据做内容审计:找出网站上哪些页面在“吃白饭“
大数据·人工智能·外贸独立站
laboratory agent开发2 小时前
智能体多工具串联执行中途失败,部分写入的数据如何回滚
运维·服务器·数据库
段一凡-华北理工大学2 小时前
AI推动工业智能化转型~系列文章07:分类与诊断算法体系:故障识别的完整工具箱
数据库·人工智能·算法·机器学习·分类·数据挖掘·高炉炼铁智能化
DBA_G2 小时前
南大通用GBase HD数据平台讲解
数据库
foolishlee3 小时前
Neon wal日志处理流程
数据库
星马梦缘3 小时前
数据库 事务管理 专项作战记录
数据库