我知道 Spark 与 Scala 完全集成。它的用例专门针对大型数据集。还有哪些其他工具具有良好的 Scala 支持?Scala 最适合大型数据集吗?还是它也适用于较小的数据集?
使用 Scala 的数据科学工具
回复:数据大小
简短的回答
Scala 适用于小型和大型数据,但其创建和开发的动机是需要一些可扩展的东西。 Scala 是“Scalable Language”的首字母缩写词。
长答案
Scala 是一种在jvm上运行的函数式编程语言。其中的“功能”部分是语言的根本区别,它使您对编程有不同的看法。如果您喜欢这种思维方式,它可以让您快速处理小数据。不管你喜不喜欢,函数式语言从根本上更容易大规模扩展。jvm 部分也很重要,因为 jvm 基本上无处不在,因此 Scala 代码基本上可以在任何地方运行。(请注意,在 jvm 上编写了很多其他语言,还有很多其他函数式编程语言,而且 Scala 之外的语言确实出现在这两个列表中。)
这个演讲很好地概述了 Scala 背后的动机。
回复:其他具有良好 Scala 支持的工具:
正如您所提到的,Spark(在迭代算法方面比同类产品更好的分布式批处理)是一个大项目。Spark 附带了用于机器学习的库Mllib和用于图形的GraphX。正如 Erik Allik 和 Tris Nefzger 所提到的,存在Akka和Factorie。还有玩。
一般来说,我不知道您是否正在挖掘特定的用例(如果有,请将其作为您问题的一部分),或者只是想对大数据工具进行调查并且碰巧了解 Scala 并想要从那里开始。
通过聆听 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,Java因为广泛使用、清晰和优秀的文档,我更喜欢它。
Scala 适用于大型和小型数据科学应用程序。如果您有兴趣尝试与 Apache Spark 完美集成的机器学习库,请考虑使用 DynaML 。就提供的模型数量而言,它仍处于起步阶段,但它通过广泛而灵活的机器学习 API 弥补了这一不足。
要查看一些示例用例,请考虑(更多来自哪里)
免责声明:我是DynaML的作者