在Java / Scala for Hadoop中构建数据分析管道的最成熟库是什么?

时间:2012-02-24 08:59:44

标签: scala hadoop cascading flume

我最近发现了许多选项,并且通过成熟度和稳定性进行比较很有趣。

  1. 紧缩 - https://github.com/cloudera/crunch
  2. Scrunch - https://github.com/cloudera/crunch/tree/master/scrunch
  3. 级联 - http://www.cascading.org/
  4. 烫伤https://github.com/twitter/scalding
  5. FlumeJava
  6. Scoobi - https://github.com/NICTA/scoobi/

3 个答案:

答案 0 :(得分:14)

由于我是Scoobi的开发者,不要指望做出公正的回答。

首先,FlumeJava是一个内部谷歌项目,它提供了一个(非常高效的)抽象的MapReduce(虽然不是hadoop)。他们发布了一篇关于它的论文,这就是像Scoobi和Crunch这样的项目所基于的。

如果你的唯一标准是成熟 - 我想Cascading是你最好的选择。

然而,如果你正在寻找(imho superior)FlumeJava风格的抽象,你需要在(S)crunch和Scoobi之间选择。

最大的区别是,表面上看起来很简单,就是使用Scala绑定(Scrunch)用Java编写的。 Scoobi是用Scala编写的Java绑定(scoobij)。他们都是非常可靠的选择,你选择的不会出错。我确信与Crunch有相似的故事,但Scoobi正在用于实际项目并且正在不断发展。我们非常积极地修复错误和实现功能。

无论如何,他们都是伟大的项目,背后有伟大的人,并且彼此之间都被释放了。它们提供相同的抽象(具有类似的api),因此在两者之间切换不会是最轻微的问题。我的建议是尝试一下,看看哪些适合你。两个项目都没有锁定,所以你不需要提交:)

如果您对这两个项目有任何反馈,请务必提供:)

答案 1 :(得分:5)

我自己是一个很棒的 Scoobi 粉丝,我在制作中使用过它。我喜欢它允许你以非常惯用的Scala方式编写类型安全的Hadoop程序的方式。如果这不一定是你的事情而且你喜欢 Cascading 模型但是被你必须编写的大量样板代码所吓倒,那么Twitter最近开源了它自己的Scala抽象层。 Cascading 名为烫伤

我认为这一点都是品味问题,因为功能方面大多数框架彼此非常接近。

答案 2 :(得分:2)

Scalding还具有构建在其上的重要开源项目的优势,例如Matrix API和Algebird。

以下是一些例子: http://sujitpal.blogspot.com/2012/08/scalding-for-impatient.html

Cascalog在Scalding发布前差不多两年发布,可以说有更强大的功能来构建强大的工作流程: https://github.com/nathanmarz/cascalog/wiki