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

相关推荐
Web3_Daisy1 分钟前
从流动性到执行:如何降低 MEV 对 Web3 市场
大数据·人工智能·web3·区块链
日常通勤穿搭6 分钟前
电商 AI 作图用哪个最方便?新手商家 AI 出图工具对比
大数据·人工智能
lilian23331 分钟前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
小淮AI35 分钟前
一个国际家庭在武汉的择校笔记:两份外籍人员子女学校的课程方案比较
大数据·人工智能
一只鹿鹿鹿1 小时前
大数据中心安全系统解决方案(Word文件)
大数据·运维·物联网·安全·政务
皮卡丘不断更1 小时前
手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口
数据库·sqlite·fastapi·开源项目·个人效率
qq_33776320191 小时前
仿博易大师内外盘国际期货软件源码全套开发:期货交易系统架构设计与核心技术解析
大数据·区块链
保卫大狮兄2 小时前
设备管理从台账到报废,完整生命周期一次讲清
数据库·设备管理·设备
盛世宏博智慧档案2 小时前
POE温湿度传感器常见故障排查与优化解决原理
大数据
数据安全技术观察2 小时前
数据动态脱敏:让脱敏策略跟着数据目录走
大数据·网络·数据库