Apache Flink Vs Spark Vs Kafka Stream

Apache Flink

Real streaming which is for data streaming (not video streaming) which operaters as a cluster separated by job and task.

In Apache Flink, you typically use the whole apache flink cluster as the whole and then submit job to that cluster.

Apache Spark

Apache spark is normally use for micro-batching — which is not really true-streaming.

Use case of apache spark is normally when the system doesn't have a strict real-time requirement. For example designing a search completion system if we want near real-time suggestion

Kafka Stream

Kafka stream is a true streaming but however less performance comparing to Apache Flink.

Kafka Stream doesn't operate based on cluster but can be used within your application as library. However it requires a system that's running Kafka.

We normally integrate with Kafka Connect so that we can stream events from database.