開源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
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
相關文章
- [開源]
- Dewdrop:開源事件源框架事件框架
- 【開源】.net微服務開發引擎Anno開源啦微服務
- 2012開源中國開源世界召開
- 企業開源指南:參與開源社群
- 開源 模式模式
- 開源精神
- 開源提示
- 開源了!唱吧 UI 元件庫開源了!UI元件
- 中國軟體“成也開源,敗也開源”?
- 開源demo| ARCall 小程式開源示例釋出
- 開源的那些事兒 (1):如何看待開源
- 開源中國的 IT 公司開源軟體整理-3
- 開源無疆|京東雲參加2019開源年會,助力開源
- 企業開源指南:建立一個開源專案
- 開源≠免費 常見開源協議介紹協議
- 【開源系列】專案開源實戰記錄-序
- “易+”開源 | 簡單可信賴,GameSentry 正式開源GAM
- 開源中國的 IT 公司開源軟體整理列表-1
- 開源企業與開源社群的相處之道
- 瞭解開源協議:常用開源協議解析協議
- 開源史上最成功的八個開源產品
- 開源中國廣州源創會分享
- C#開源資源專案C#
- 開源資源快速連結(一)
- CentOS yum 源 網易開源映象站CentOS
- ONAP開源社群
- 騰訊UnLua開源
- 開源FastGithubASTGithub
- capt 正式開源APT
- TiFlash 開源了
- 開源=免費?
- NOSQL EYE開源SQL
- 開源網址
- 再論開源
- .NET 核心開源
- C#開源C#
- 開源系統