scala上的hadoop有哪些选项

mjqavswn  于 2021-06-04  发布在  Hadoop
关注(0)|答案(5)|浏览(377)

我们正在启动一个基于大数据的分析项目,并考虑采用scala(typesafe stack)。我想知道各种scalaapi的/项目,可以做hadoop,map reduce程序。

x7yiwoj4

x7yiwoj41#

另一个选项是stratosphere,它提供了一个scalaapi,可以将scala类型转换为stratosphere的内部数据类型。
api与烫伤非常相似,但平流层本身支持高级数据流(因此不必链接mapreduce作业)。平流层比烫伤有更好的表现。
Stratospher不是在HadoopMapReduce上运行,而是在HadoopYarn上运行,因此可以使用现有的yarn集群。
这是Stratospher中的单词计数示例(使用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))
vdzxcuhz

vdzxcuhz2#

前两个我可能会调查烫伤(它建立在级联之上)和scoobi。不过,我也没有使用过,但特别是滚烫,它似乎提供了一个非常好的api。

4sup72z8

4sup72z83#

我和史酷比相处得很成功。它的使用非常简单,强类型,隐藏了大部分hadoop混乱(通过自动序列化对象),完全是scala。我喜欢它的api的一个地方是,设计者希望scoobi集合感觉像标准的scala集合,所以实际上使用它们的方式基本相同,只是操作在hadoop上运行,而不是在本地运行。这实际上使得在开发和测试时在scoobi集合和scala集合之间切换非常容易。
我还使用了scrunch,它构建在基于java的crunch之上。我有一段时间没用过它了,但它现在是apache的一部分。

ttcibm8c

ttcibm8c4#

肯定是烫伤。作为一个用户和偶尔的贡献者,我发现它是一个非常有用的工具。滚烫的api也意味着与标准scala集合api非常兼容。正如在普通集合上可以调用flatmap、map或groupby一样,在滚烫的管道上也可以调用flatmap、map或groupby,可以将其想象为元组的分布式列表。还有一个类型化版本的api,它提供了更强的类型安全保证。我没有使用scoobi,但是api似乎和他们的相似。
此外,还有其他一些好处:
烫伤在twitter的生产中被大量使用,并在twitter规模的数据集上进行了战斗测试。
它在twitter内部和外部都有一些积极的贡献者,他们致力于让twitter变得更好。
它可以与您现有的级联作业进行互操作。
除了类型化api之外,它还有一个字段api,对于r和Dataframe框架的用户可能更熟悉。
它提供了一个健壮的矩阵库。

de90aj5v

de90aj5v5#

twitter在烫伤方面投入了大量精力,包括一个很好的矩阵库,可以用于各种机器学习任务。我也要试试史酷比。
为了完整性,如果您不喜欢mapreduce,请看一下spark项目。在很多情况下,它的表现都要好得多,包括在它们的Hive港,也就是所谓的鲨鱼港。作为一个经常使用Hive的用户,我对这个很兴奋。

相关问题