That should not be that hard, it is basically manipulating the stream. The following code is pseudo code, but it should give you an idea how the process.
val twitts = getTwitterStream(….)
val commentsWithHighScore =
.filter(twitt => getScore(twitt.commets) > 5)
val usersCount =
.map(t => (t.user, (t, 1)))
.reduceByKey((t1, t2) => t1._2 + t2._2)
val userReputations =
.filter(_.2._2 >= 2)
.filter(x => getCore(x._2._2) < 6)
This is some of them, you can do the other ones in the same way. As you can see we are only manipulating the stream. You might need to do windowed operations for getting data for an entire day or so.