在scala上使用hadoop有哪些选择?

问题描述 投票:24回答:5

我们正在启动一个基于大数据的分析项目,我们正在考虑采用scala(typeafe stack)。I would like to know the various scala API'sprojects which are available to do hadoop , map reduce programs.

scala hadoop mapreduce jvm-languages
5个回答
20
投票

一定要检查出来 烫金. 作为一个用户和偶尔的贡献者,我发现它是一个非常有用的工具。Scalding API也是为了与标准的Scala集合API非常兼容。就像你可以在普通集合上调用flatMap、map或者groupBy一样,你也可以在烫金Pipes上做同样的事情,你可以把它想象成一个分布式的List of tuples。还有一个类型化版本的API,它提供了更强的类型安全保证。我没有用过Scoobi,但API似乎和他们的类似。

此外,还有一些其他的好处。

  • Scalding在Twitter的生产中被大量使用,并且已经在Twitter规模的数据集上进行了战斗测试。
  • 它有几个活跃的贡献者,无论是在Twitter内部还是外部,他们都致力于使它变得伟大。
  • 它可以与你现有的Cascading作业进行互操作。
  • 除了Typed API之外,它还有一个Fields API,对于R和数据框架的用户来说可能更熟悉。
  • 它提供了一个强大的 矩阵库.

8
投票

我已经成功地与 史酷比. 它使用起来很直接,类型化很强,隐藏了大部分Hadoop的混乱(通过为你自动序列化你的对象),而且完全是Scala。 我喜欢它的 API 的一个原因是,设计者希望 Scoobi 集合的感觉就像标准的 Scala 集合一样,所以实际上你使用它们的方式是一样的,只是操作是在 Hadoop 上而不是在本地运行。 这实际上使得你在开发和测试时很容易在Scoobi集合和Scala集合之间切换。

我也使用过 刮刮乐,它是建立在基于Java的Crunch之上的。 我已经有一段时间没有使用它了,但它现在是Apache的一部分。


4
投票

Twitter在Scalding上投入了很多精力,包括一个不错的Matrix库,可以用于各种机器学习任务。我也需要尝试一下Scoobi。

为了完整起见,如果你不拘泥于MapReduce,可以看一看 火花 项目中。它在许多场景下的表现要好得多,包括在他们将Hive移植到Spark的过程中,适当地称为 鲨鱼. 作为一个经常使用Hive的人,我对这个很兴奋。


1
投票

我可能会调查的前两个项目是 烫金 的基础上 级联)和 史酷比. 我没有用过这两种方法,但特别是Scalding,看起来它提供了一个非常好的API。


1
投票

另一个选择是 平流层它提供了一个 Scala API 将Scala类型转换为Stratosphere的内部数据类型。

该API与Scalding十分相似,但Stratosphere原生支持高级数据流(因此你不必链上MapReduce Jobs)。你使用Stratosphere会比使用Scalding有更好的性能。

Stratosphere 并非运行在 Hadoop MapReduce 上,而是运行在 Hadoop YARN所以,你可以 使用您现有的YARN集群.

这是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))
© www.soinside.com 2019 - 2024. All rights reserved.