在过去几年,业界的主流流计算引擎大多采用Spark Streaming,随着近两年Flink的快速发展,Flink的使用也越来越广泛。与此同时,Spark针对Spark Streaming的不足,也继而推出了新的流计算组件。本文旨在深入分析不同的流计算引擎的内在机制和功能特点,为流处理场景的选型提供参考。
(DLab数据实验室 w.x.公众号出品)
一. Spark Streaming
Spark Streaming是Spark最早推出的流处理组件,它基于流式批处理引擎,基本原理是把输入数据以某一时间间隔批量的处理(微批次),当批处理时间间隔缩短到秒级时,便可以用于实时数据流。
1. 编程模型
在Spark Streaming内部,将接收到数据流按照一定的时间间隔进行切分,然后交给Spark引擎处理,最终得到一个个微批的处理结果。
2. 数据抽象
离散数据流或者数据流是Spark Streaming提供的基本抽象。它可以是从数据源不断流入的,也可以是从一个数据流转换而来的。本质上就是一系列的RDD。每个流中的RDD包含了一个特定时间间隔内的数据集合,如下图所示。
3. 窗口操作
Spark Stream