实时数据开发|Flink如何实现不同数据源输入--DataSource模块

DataStream 编程模型

Flink定义DataStream API让用户灵活且高效的编写流式应用。主要分为3部分:DataSource模块,Transformation模块以及DataSink模块。

  1. DataSource模块,主要定义了数据接入功能,将外部数据接入至flink,并将接入数据转换成对应的datastream数据集。
  2. Transformation 模块定义了对 DataStream 数据集的各种转换操作,例如进行 map、filter、windows等操作。
  3. 最后,将结果数据通过Datasink模块写出到外部存储介质中,例如将数据输出到文件或Kaka消息中间件等。

今天主要讲DataSources:

DataSources数据输入

DataSources 模块定义了DataStream API中的数据输人操作,Flink将数据源主要分为的内置数据源和第三方数据源两种类型。其中内置数据源包含文件、Socket网络端口以及集合类型数据 ,其不需要引人其他依赖库,且在Flink系统内部已经实现,用户可以直接调用相关方法使用。第三方数据源定义了Flink和外部系统数据交互的逻辑,包括数据的读写接口。在Flink中定义了非常丰富的第三方数据源连接器(Connector),例如Apache kafka Connector、Elatic Search Connector等。同时用户也可以自定义实现Flink中数据接人函数 SourceFunction,并封装成第三方数据源的Connector,完成Flink与其他外部系统的数据交互。

内置数据源

  1. 文件数据源:flink支持将文件内容读取到系统中,并转换成分布式数据集DataStream 进行数据处理。readFile时可以指定文件读取类型(WatchType),检测文件变换时间间隔(interval)、文件路径过滤条件(FilePathFilter)等参数。watchtype分为PROCESS_CONTINUOUSLY和PROCESS_ONCE模式,前置检测到文件内容变化会加载全部内容到Flink;而后者只加载变化的数据,即数据只被读取、处理一次 。因此后一种方式才能保证Exactly Once级别的数据一致性保障
  2. Socket数据源:参数为IP地址和端口。
  3. 集合数据源:Flink可以直接将集合类(collection)转换成datastream数据集,本质上是将本地集合中的数据分发到远端并行执行的节点中。注意集合内的数据结构需要一致,否则可能出现数据转换异常。

外部数据源

  1. 数据源连接器
    前面提到的数据源类型都是些基本的数据接人方式,其实质是实现了不同的SourceFuncion,Fink将其封装成高级API,减少用户的使用成本。
    对于流式计算类型的应用,数据大部分都是从外部第三方系统中获取。Flink定义了非常丰富的第三方数据连接器:
  • 其中部分连接器是仅支持读取数据,例如Netty等;
  • 一部分仅支持数据输出(Sink):Elasticsearch、Hadoop FileSystem等。
  • 还有一部分是支持数据输入和输出:例如 Apache Kafka、Amazon Kinesis连接器。例如kafka connector中使用的主要参数有:kafka topic、bootstrap.servers、zookeeper.connect。
  1. 自定义数据源连接器。可以通过实现SourceFunction定义单个 现成的接入的数据接入其,也可以实现parallelSourceFunction接口定义并发数据源接入器。
相关推荐
warrah1 分钟前
flink-cdc同步数据到doris中
flink·doris
坚定信念,勇往无前3 分钟前
Spring Boot中整合Flink CDC 数据库变更监听器来实现对MySQL数据库
数据库·spring boot·flink
undo_try2 小时前
大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(2)
flink·bigdata·paimon
roman_日积跬步-终至千里1 天前
【Flink 实战】Flink 中 Akka 通信与内存占用分析
大数据·flink
抛砖者1 天前
8. Flink-CDC
flink·flink-cdc
码上淘金1 天前
Apache Flink架构深度解析:任务调度、算子数据同步与TaskSlot资源管理机制
大数据·架构·flink
roman_日积跬步-终至千里1 天前
【Flink实战】Flink网络内存和托管内存
服务器·网络·flink
Ray.19981 天前
优化 Flink 消费 Kafka 数据的速度:实战指南
大数据·flink·kafka
D愿你归来仍是少年1 天前
Python解析 Flink Job 依赖的checkpoint 路径
大数据·python·flink
viperrrrrrrrrr72 天前
大数据学习(49) - Flink按键分区状态(Keyed State)
大数据·学习·flink