开源ScalaStorm

13-11-12 banq
         

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