我想找到好的和健壮的 MapReduce 框架,可以从 Scala 中使用。
8 回答
补充一下关于 Hadoop 的答案:至少有两个 Scala 包装器可以让使用 Hadoop 更容易接受。
Scala Map Reduce (SMR):http ://scala-blogs.org/2008/09/scalable-language-and-scalable.html
SHadoop:http: //jonhnny-weslley.blogspot.com/2008/05/shadoop.html
10 月 5 日更新。11
还有Scoobi框架,具有令人敬畏的表现力。
您可能对scouchdb感兴趣,这是一个使用CouchDB的 Scala 接口。
另一个想法是使用GridGain。 ScalaDudes有一个在 Scala 中使用 GridGain 的示例。这是另一个例子。
不久前,我恰好遇到了这个问题,并最终编写了一个小基础设施,以便轻松使用 Scala 中的 Hadoop。我自己用了一段时间,但我终于把它放在网上了。它被命名(非常原始)ScalaHadoop。
对于 hadoop 之上的 scala API,请查看Scoobi,它仍在大量开发中,但显示出很多希望。还有一些努力在Scala 孵化器中的 hadoop 之上实现分布式集合,但这种努力尚不可用。
还有一个新的用于从 Twitter 级联的 scala 包装器,称为Scalding。在非常简要地查看了 Scalding 的文档之后,似乎虽然它使与级联的集成更加顺畅,但它仍然没有解决我认为的级联的主要问题:类型安全。级联中的每个操作都对级联的元组(基本上是具有或不具有单独架构的字段值列表)进行操作,这意味着类型错误,即将键作为字符串连接,将键作为长连接会导致运行时失败。
进一步 jshen 的观点:
hadoop 流只使用套接字。使用 unix 流,您的代码(任何语言)只需能够从标准输入读取并输出制表符分隔的流。实现一个映射器,如果需要,一个reducer(如果相关,将其配置为组合器)。
我在 Github 上使用 Hadoop 添加了 MapReduce 实现,这里有几个测试用例:https ://github.com/sauravsahu02/MapReduceUsingScala 。希望有帮助。请注意,该应用程序已经过测试。