sco上hadoop的选项有哪些?

时间:2013-01-30 04:04:37

标签: scala hadoop mapreduce bigdata jvm-languages

我们正在开始一个基于大数据的分析项目,我们正在考虑采用scala(类型安全堆栈)。我想知道各种scala API /项目可用于做hadoop,map reduce程序。

5 个答案:

答案 0 :(得分:20)

绝对查看Scalding。作为用户和偶尔的撰稿人,我发现它是一个非常有用的工具。 Scalding API也与标准Scala集合API非常兼容。正如您可以在普通集合上调用flatMap,map或groupBy一样,您可以在烫印管道上执行相同操作,您可以将其视为分布式元组列表。还有一个API的类型版本,提供更强的类型安全保证。我没有使用过Scoobi,但API看起来与它们的相似。

此外,还有一些其他好处:

  • 烫伤在Twitter的制作中大量使用,并且已在Twitter规模的数据集上进行过战斗测试。
  • 它在Twitter内部和外部都有几个积极的贡献者,致力于使它变得更好。
  • 可与您现有的级联作业互操作。
  • 除了Typed API之外,它还有一个Fields API,对于R和数据框架框架的用户来说可能更熟悉。
  • 它提供了强大的Matrix Library

答案 1 :(得分:8)

我在Scoobi取得了成功。它很容易使用,强类型,隐藏大部分Hadoop混乱(通过做自动序列化对象的事情),以及完全Scala。我喜欢它的API的一个原因是设计人员希望Scoobi集合感觉就像标准的Scala集合一样,所以你实际上以相同的方式使用它们,除了操作在Hadoop而不是本地运行。这实际上使您在开发和测试时可以很容易地在Scoobi集合和Scala集合之间切换。

我还使用了Scrunch,它建立在基于Java的Crunch之上。我有一段时间没有使用它,但它现在是Apache的一部分。

答案 2 :(得分:4)

Twitter正在为Scalding投入大量精力,包括一个可用于各种机器学习任务的漂亮的Matrix库。我也需要尝试一下Scoobi。

为了完整起见,如果您没有结合MapReduce,请查看Spark项目。它在许多场景中表现得更好,包括在他们的Hive to Spark端口中,适当地称为Shark。作为一个频繁的Hive用户,我对此感到很兴奋。

答案 3 :(得分:1)

我可能会调查的前两个是Scalding(建立在Cascading之上)和Scoobi。但是,我没有使用过,但特别是Scalding看起来像是提供了一个非常好的API。

答案 4 :(得分:1)

另一个选项是Stratosphere,它提供了Scala API,可将Scala类型转换为Stratosphere的内部数据类型。

API与Scalding非常相似,但Stratosphere本身支持高级数据流(因此您不必链接MapReduce作业)。与Stalosphere相比,你的表现要好于Scalding。

Stratosphere不会在Hadoop MapReduce上运行,而是在Hadoop YARN上运行,因此您可以use your existing YARN cluster

这是Stratosphere中的单词计数示例(使用Scala API):

val input = TextFile(textInput)
val words = input.flatMap { line => line.split(" ") }
val counts = words
  .groupBy { word => word }
  .count()
val output = counts.write(wordsOutput, CsvOutputFormat())
val plan = new ScalaPlan(Seq(output))