开源ScalaStorm

velvia/ScalaStorm · GitHub

scalaStorm提供一个基于Storm的Scala DSL,进行实时分布式计算,也提供开发Storm topology的Scala和SBT框架。

经典的单词计数topology代码SplitSentence 如下:
class SplitSentence extends StormBolt(outputFields = List("word")) {
def execute(t: Tuple) = t matchSeq {
case Seq(sentence: String) => sentence split " " foreach
{ word => using anchor t emit (word) }
t ack
}
}


相比使用Java要简单多,见Storm使用介绍:http://www.jdon.com/bigdata/storm.html

好处:
1. 使用matchSeq DSL 能够激活 Scala 基于tuple的模式匹配,这给你一个多么好的命名和标识每个组件的方式,想象一下匹配不同类型的tuple,象一个join, 容易灵活。

2.发送DSL 读起来象英文,易于携带多个参数(val1, val2, ...)

3.输出字段易于声明

4.当发射和确认发生时,易于精准观察到。

对Scala程序员有用特性:
Auto-boxing of Scala primitives in tuple emit and matchSeq
BoltDsl trait能对thread/actor/class都使用DSL