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

相关推荐
大大大大晴天4 小时前
Hudi技术内幕:Key Generation原理与实践
大数据
倔强的石头_2 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab3 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence3 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
得物技术3 天前
从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流
大数据·llm·ai编程
久美子4 天前
AI驱动数仓建设的Harness工程实践——本体建模、知识分层与上下文工程
大数据
无响应de神4 天前
三、用户与权限管理
数据库·mysql
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
大志哥1234 天前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
果丁智能4 天前
物联网智能锁赋能集中式住宿:身份核验与远程权限管控的全链路技术实践
大数据·人工智能·物联网·智能家居