📅  最后修改于: 2023-12-03 15:29:26.220000             🧑  作者: Mango
Apache Spark 是一个快速、通用型、基于内存的分布式计算系统,适用于大规模数据处理。它可以在数十个节点的集群上进行高性能运算。Spark 最初是从 University of California, Berkeley计算机系AMPLab(Algorithms, Machines and People Lab)开源实验室的科研项目 Apache Mesos 中衍生出来的,于 2010 年开始开发。
以下是 Spark 最新版本的架构图:
Spark 的最大特点就是弹性分布式数据集(RDD),即能够高效地处理分布式数据,还支持多种语言接口,包括 Java、Scala、Python 和 R。此外,Spark 还包括一些针对数据科学家的应用程序,如 MLlib、GraphX 和 Spark Streaming。
Scala 是一种优秀的 JVM 语言,可以与 Java 无缝交互,并且支持面向对象编程、函数式编程和混合编程。Scala 的语法简洁、灵活,也具备高效的运行速度,因此成为 Spark 的主要开发语言。
以下是 Scala 对于 Spark 的支持情况:
RDD是 Spark 最核心的一个概念,是一种高性能、弹性、高可靠性、基于内存的分布式数据集合。其可将数据分布在多台机器的内存中,避免了磁盘读取开销,从而实现了高速处理。此外,RDD 还支持类似容错操作的高可靠性检查点等特性。
以下是 RDD 的主要特征:
下面是 RDD 的定义:
abstract class RDD[T: ClassTag](
@transient private var _sc: SparkContext,
@transient private var deps: Seq[Dependency[_]]
) extends Serializable with Logging {
...
}
在 Spark 中,RDD 提供了两种主要的操作:转换操作和行动操作。转换操作产生了一个新的 RDD,而行动操作在 RDD 上执行计算并返回结果。
以下是转换操作的常用例子:
以下是操作操作的常用例子:
Apache Spark 是当前最受欢迎的分布式计算系统之一,Scala 则是其主要开发语言,弹性分布式数据集(RDD)则是典型特性之一。掌握 Spark 和 Scala 的组合,对于大数据处理工程师至关重要,无论是在企业应用程序还是研究领域。