Alink教程(Java版)
该文档涉及的组件

第2.1节 基本概念

数据集(DataSet)与数据流(DataStream)的区别在于用户是否可以假定数据有界。数据集(DataSet)的数据有界就意味着,数据是静止的、确定的,内容和个数都不会变化。

在逐条读取数据时,数据集(DataSet)的数据是有界的、个数确定,我们可以执行某些操作。比如,统计该数据集的记录总数,计算平均值、方差等统计量;在逻辑上,可以看作把该数据集按照某个操作处理完,得到一个新的数据集,然后对该新数据集进行另外一个操作,得到另一个新的数据集。

批式(Batch)数据对应着数据集(DataSet),流式(Stream)数据对应着数据流(DataStream)。

数据处理的基本流程就是三部分:数据源(Source)、算法组件(Operator)和数据导出(Sink),如下图所示。

考虑到数据集和数据流之间的区别,处理操作被分为批式处理(Batch Processing)和流式处理(Stream Processing),如下图所示。在批式处理中,批式数据源组件(Batch Source)读入的数据为数据集;批式导出组件(Batch Sink)将数据集导出到文件系统或数据库;批式算法组件(BatchOperator)的输入和计算结果都为数据集。对于流式处理,流式数据源组件(Stream Source)用来接入数据流;流式导出组件(Stream Sink)负责将数据流导出,即将数据流导出到文件系统或数据库;流式算法组件(StreamOperator)的处理粒度是单条数据,即从输入的数据流中逐条获取数据进行计算,该计算结果为若干条数据,这些数据会进入输出数据流。连接流式数据源组件、各个流式算法组件和流式导出组件,构成数据流的管道。


Alink将Flink Table作为数据集和数据流的统一表示,其中数据行的类型为org.apache.flink. types.Row。

Alink为了统一各算法模块间交换数据的格式,确定将Row格式作为各算法处理的单条数据的标准类型;相应的批数据与流数据的类型为Flink Table。如此一来,SQL操作与算法模块间可以通过Flink Table来传递数据,这样SQL操作与算法操作就可以出现在同一个工作流中,方便用户使用。