我个人推荐使用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