At first glance, Flink and Spark would appear to be the same. The main difference is Flink was built from the ground up as a streaming product. Spark added Streaming onto their product later. Apache Spark and Apache Flink are both open- sourced, distributed processing framework which was built to reduce the latencies of Hadoop MapReduce in fast data processing
Flink processes data the same way, whether it is finite or infinite. Spark does not: it uses DStreams for streaming data and RDD for batch data. Spark was built, like Hadoop, to run over static data sets. Flink can do this by just stopping the streaming source.
What Spark has that Flink does not is a large install base of production users. Now it's too early to tell which one will take over the other.