我最近发现了很多选择,并且主要通过成熟度和稳定性进行比较。
3 回答
因为我是 Scoobi 的开发人员,所以不要指望一个公正的答案。
首先,FlumeJava 是一个谷歌内部项目,它在 MapReduce 之上提供了一个(非常高效的)抽象(虽然不是 hadoop)。他们发布了一篇关于它的论文,这是 Scoobi 和 Crunch 等项目的基础。
如果您的唯一标准是成熟度——我想 Cascading 是您最好的选择。
但是,如果您正在寻找(恕我直言)FlumeJava 风格的抽象,您将需要在 (S)crunch 和 Scoobi 之间进行选择。
最大的区别可能是肤浅的,因为 crunch 是用 Java 编写的,带有 Scala 绑定 (Scrunch)。Scoobi 是用带有 Java 绑定 (scoobij) 的 Scala 编写的。它们都是非常可靠的选择,无论您选择哪个都不会出错。我敢肯定 Crunch 也有类似的故事,但 Scoobi 正在实际项目中使用,并且正在持续开发中。我们在修复错误和实现功能方面非常积极。
无论如何,它们都是伟大的项目,背后有伟大的人,并且都在几天内发布。它们提供相同的抽象(使用类似的 api),因此在两者之间切换一点也不成问题。我的建议是两个都试一试,看看什么对你有用。两个项目都没有锁定,所以你不需要提交:)
如果您对这两个项目有任何反馈,请务必提供:)
我自己是Scoobi的忠实粉丝,我已经在生产中使用过它。我喜欢它允许您以非常惯用的 Scala 方式编写类型安全的 Hadoop 程序的方式。如果这不一定是你的事,并且你喜欢Cascading模型,但又被你必须编写的大量样板代码吓到,那么 Twitter 最近在Cascading之上开源了自己的 Scala 抽象层,称为Scalding。
我想此时这完全是一个品味问题,因为在功能方面,大多数框架彼此非常接近。
Scalding also has the advantage of significant open source projects built atop it, such as Matrix API and Algebird.
Here are some examples: http://sujitpal.blogspot.com/2012/08/scalding-for-impatient.html
Cascalog was released almost two years before Scalding, and arguably has more advanced features for building robust workflows: https://github.com/nathanmarz/cascalog/wiki