实时数据开发|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接口定义并发数据源接入器。
相关推荐
starzy19903 小时前
Flink JobManager启动流程源码深度剖析:从ClusterEntrypoint到JobMaster启动的完整链路
大数据·flink
用户3610588626124 小时前
Flink Time 之 WaterMark 水位线原理剖析:从生成机制到传播触发与调优实战
大数据·flink
俊哥大数据7 小时前
Flink 2.3.0 从理论到实践 —— 第 2 章 Flink 运行时架构
网络·架构·flink
俊哥大数据7 小时前
Flink 2.3.0 从理论到实践 —— 第 4 章 状态管理(State)
flink
俊哥大数据7 小时前
Flink 2.3.0 从理论到实践 —— 第 5 章 时间语义与 Watermark
flink
码爸1 天前
多源异构数据库实时同步至 Doris
数据库·flink·scala
用户3610588626121 天前
Flink Time 之时间语义深度剖析:从 Processing Time 到 Event Time 与 Watermark 机制
大数据·flink
用户3610588626121 天前
Flink 窗口聚合函数详解及代码实现:从 ReduceFunction 到增量聚合 + ProcessWindowFunction 组合
大数据·flink
俊哥大数据1 天前
基于 FlinkSQL + Paimon + Doris 的车联网流批一体湖仓实践 —— 第 2 章 流批一体湖仓总体架构与三条分区契约铁律
flink·doris·湖仓一体·paimon
俊哥大数据1 天前
基于 FlinkSQL + Paimon + Doris 的车联网流批一体湖仓实践 —— 第 4 章 Kafka 企标报文入湖(ODS 表设计)
flink·doris·湖仓一体·paimon·流批一体