Stream Processing with Apache Flink
blog.brakmic.com
blog.brakmic.com
Summary: advantages are real-time (10s of milliseconds) processing latency, exactly-once semantics, failure-recovery model based on Chandy Lamport, backpressure support.
Generating analytics directly off a stream has never seemed that useful to me. Being able to take all the data in the stream and merge it with previously collected data, then query that merged data is the sort of thing I need to be able to do.
Maybe this article could be of some value to you: http://flink.apache.org/news/2015/02/09/streaming-example.ht...
Btw. handling DataStreams and DataSets in Flink is done via almost similar API calls. In DataStreams you only have to additionally insert the Time-Window parameters. Everything else (transformations like filter, map, flatMap etc.) remain the same.
Kind regards, Harris
Sorry for the shameless plug, but Striim does that with a SQL-like interface. Joining streams and previously collected, cached data is as easy as writing a join.
You can try it out here: http://www.striim.com
Some time ago I wrote an article about Apache Spark: http://blog.brakmic.com/data-science-for-losers-part-3-scala...
However, I don't think that writing a comparison of such complex technologies within an introductory article would be of much value to readers. Of course, it would be easy to create some tabular structure containing "pro/contra" about Flink and Spark, but this would be way too simplistic, imho.
To be honest, I don't consider myself an expert on Flink and/or Spark so it would be unfair towards my readers to embed such a comparison within the article.
But a properly written comparison could be of value for those who have to decide what kind of processing (batch/streaming/machine learning etc.) they need to fulfill some specific (that is, "business") tasks.
Kind Regards, Harris