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

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。

 

 


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章