flink源码阅读---DataStream数据架构描述1-core底层 架构

发布于:2021-10-27 00:37:49

flink提供了流计算和批计算,对应的api分别数dataStream api和dataSet api,下面我们从源码层面对dataStream进行简单分析。


DataStream数据结构:

DataStream表示相同类型的元素流。一个DataStream可以通过应用转换为另一个DataStream。DataStream包含StreamExecutionEnvironment上下文和Transformation,Transformation表示创建datastream的操作。


DataStream方法:


DataStream类结构:


DataStream数据流

datastream是流处理的api,既然是流处理,就必须有获取数据,处理数据,转换为另一个DataStream的操作,最后还应该有数据持久化的操作。


flink中获取数据的接口是:org.apache.flink.api.common.io.InputFormat


数据处理的接口是:? ?org.apache.flink.api.common.operators.Operator


数据持久化的接口是:org.apache.flink.api.common.io.OutputFormat


我们的使命是探究DataStream和InputFormat,Operator,OutputFormat 之间的关系。


InputFormat:

InputFormat is?The base interface for data sources that produces records.


InputFormat处理以下问题:

1. 它描述了如何将输入分割成可并行处理的分块


2. 它描述了如何从输入分割中读取记录


3. 它描述了如何从输入中收集基本的统计信息。


InputFormat的生命周期如下:

1. 被Configuration配置初始化,基础域从Configuration中读取


2.可选:编译器调用它来生成关于输入的基本统计信息


3.调用它来创建输入分割


4.每个并行InputFormat任务创建一个实例,配置它,并为特定的分割打开它


5.从InputFormat读取所有记录


6.关闭InputFormat


InputFormat集成结构


Operator:

?批处理的基类是org.apache.flink.api.common.operators.Operator


?而流处理的基类是org.apache.flink.streaming.api.operators.StreamOperator


,从这感觉批处理才是嫡系,流处理是自定义基类。我们这次关心流处理,所以后面在讨论stream api时候讨论StreamOperator.


?
OutputFormat:

用于消耗记录的输出的基本接口。outputFormat描述如何存储最终记录,例如在文件中。生命周期如下:


1.configure()可用于实现初始化时可能附加的参数(配置)


2.每个并行输出任务创建一个实例,配置它并打开它


3.并行实例的所有记录都被传递到outputFormat


4.关闭outputFormat。



?


?



?

?

相关推荐

最新更新

猜你喜欢