我知道Spark已与Scala完全集成。它的用例专门用于大型数据集。其他哪些工具具有良好的Scala支持?Scala是否最适合大型数据集?还是也适合较小的数据集?
我知道Spark已与Scala完全集成。它的用例专门用于大型数据集。其他哪些工具具有良好的Scala支持?Scala是否最适合大型数据集?还是也适合较小的数据集?
Answers:
Scala适用于小型和大型数据,但是其创建和开发是由需要可扩展的东西驱动的。 Scala是“可扩展语言”的缩写。
Scala是一种在jvm上运行的功能性编程语言。其中的“功能”部分是语言上的根本差异,使您对编程有不同的看法。如果您喜欢这种思维方式,它可以让您快速处理小数据。无论您是否喜欢,功能语言从根本上都更易于大规模扩展。jvm片段也很重要,因为jvm基本上无处不在,因此Scala代码基本上可以在任何地方运行。(请注意,jvm上还有很多其他语言,还有很多其他功能性编程语言,而且Scala以外的语言也会出现在这两个列表中。)
这篇演讲很好地概述了Scala背后的动机。
正如您所提到的,Spark(在迭代算法上比同等产品更好的可分发批处理)是一个很大的例子。火花谈到它的库Mllib机器学习和GraphX的图表。如Erik Allik和Tris Nefzger所述,Akka和Factorie存在。还有Play。
通常,我无法确定您是否在挖掘特定的用例(如果是,则将其作为问题的一部分),或者只想对大数据工具进行调查并碰巧了解Scala并想要从那里开始。
ScalaNLP是一套机器学习和数值计算库,支持常见的自然语言处理任务。http://www.scalanlp.org/
这是数据科学的Scala库的最新列表:https : //www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1
通过聆听Scala的创建者Martin Odersky的演讲,它特别适合通过结合面向对象和轻巧语法的功能编程构造来构建高度可扩展的系统。它对小型系统的开发和快速原型设计也很有用,因为它比其他一些语言花费更少的代码行,并且具有用于快速反馈的交互模式。一个著名的Scala框架是Akka,它使用并发计算的参与者模型。Odersky的许多演讲都在YouTube上发布,并且在wiki.scala-lang.org上有使用Scala实现的工具列表。
隐含的一点是,用Scala编写的工具和框架固有地具有Scala集成,并且通常具有Scala API。然后,可以添加其他API以支持以Java开头的其他语言,因为Scala已经集成,并且实际上严重依赖Java。如果未使用Scala编写工具或框架,则它不太可能为Scala提供任何支持。这就是为什么在回答您的问题时,我指出了用Scala和Spark编写的工具和框架是一个示例。但是,Scala目前在市场中占有很小的份额,但其采用率正在增长,Spark的高增长率将增强这一点。我使用Scala的原因是因为Spark的Scala API比Java和Python API丰富。
我一般首选Scala的主要原因是,它比Java具有更高的表达力,因为它允许并促进将函数用作对象和值,同时保持面向对象的模块化,这使得开发复杂而正确的程序的代码比Java少得多。我之所以喜欢它,是因为其用途广泛,清晰明了且文档出色。