我個人推薦使用Scalding,這是一個在Cascading之上的Scala抽象,用於抽象低級Hadoop細節。它是在Twitter上開發的,今天看來已經夠成熟了,所以你可以開始真正使用它,而不會有太多的麻煩。
下面是一個例子,你會怎麼做一個WORDCOUNT在滾燙:
package com.twitter.scalding.examples
import com.twitter.scalding._
class WordCountJob(args : Args) extends Job(args) {
TextLine(args("input"))
.flatMap('line -> 'word) { line : String => tokenize(line) }
.groupBy('word) { _.size }
.write(Tsv(args("output")))
// Split a piece of text into individual words.
def tokenize(text : String) : Array[String] = {
// Lowercase each word and remove punctuation.
text.toLowerCase.replaceAll("[^a-zA-Z0-9\\s]", "").split("\\s+")
}
}
我認爲這是一個很好的選擇,因爲,因爲它使用Scala的它不是從正規地圖太遠/ Reduce的Java程序,即使你不知道斯卡拉,拿起它並不難。
您將使用多少個計算節點?多核心?還是集羣? – 2013-02-21 22:37:15
你的背景是什麼?一門語言學習多麼容易取決於你的經驗。 – luqui 2013-02-21 22:37:26
我從來沒有用功能語言編寫過非平凡的程序。我在Prolog和Haskell中編寫了TRIVIAL程序。但是,我已經使用命令式語言(C,C++,Python)進行編程超過10年。我認爲自己是一名C程序員。 @DonStewart:這不是一個真實世界的程序,而只是一個班級的作業。 2核心是好的。 – 2013-02-21 22:43:34