1)从架构角度上:SparkStreaming 的 Task 的运行依赖于 Driver,Executor,Worker,Flink 运行主要依赖于JobManager,TaskManager。
2)从数据处理的角度:SparkStreaming 是微批处理,需要指定微批处理的时间间隔,而 Flink 是通过事件时间作为驱动的,是真正意义上的流处理。
3)从时间机制上:Flink 提供了事件时间,注入时间,处理时间,最主要的就是事件时间。同时 Flink 支持 WaterMark 水位线机制,支持数据的延迟处理,这方面 SaprkStreaming 只有处理时间、StructStreaming 支持事件时间和 WaterMark,但是并没有 Flink 做的好,Flink 做的更加完善。
4)checkpoint方面,Flink 的 checkpoint 有 exactly-once,保证数据刚好被处理一次,spark 可能会处理多次。
2)从数据处理的角度:SparkStreaming 是微批处理,需要指定微批处理的时间间隔,而 Flink 是通过事件时间作为驱动的,是真正意义上的流处理。
3)从时间机制上:Flink 提供了事件时间,注入时间,处理时间,最主要的就是事件时间。同时 Flink 支持 WaterMark 水位线机制,支持数据的延迟处理,这方面 SaprkStreaming 只有处理时间、StructStreaming 支持事件时间和 WaterMark,但是并没有 Flink 做的好,Flink 做的更加完善。
4)checkpoint方面,Flink 的 checkpoint 有 exactly-once,保证数据刚好被处理一次,spark 可能会处理多次。