Spark编程模型

Spark简述

下图是Spark和MapReduce进行逻辑回归机器学习的性能比较,Spark比MapReduce快100多倍。

image

除了速度更快,Spark和MapReduce相比,还有更简单易用的编程模型。使用Scala语言在Spark上编写WordCount程序,主要代码只需要三行。


val textFile = sc.textFile("hdfs://...")
val counts = textFile.flatMap(line => line.split(" "))
                 .map(word => (word, 1))
                 .reduceByKey(_ + _)
counts.saveAsTextFile("hdfs://...")

Spark核心概念

RDD

RDD是Spark的核心概念,是弹性数据集(Resilient Distributed Datasets)的缩写。RDD既是Spark面向开发者的编程模型,又是Spark自身架构的核心元素。
Spark则直接针对数据进行编程,将大规模数据集合抽象成一个RDD对象,然后在这个RDD上进行各种计算处理,得到一个新的RDD,继续计算处理,直到得到最后的结果数据。所以Spark可以理解成是面向对象的大数据计算。我们在进行Spark编程的时候,思考的是一个RDD对象需要经过什么样的操作,转换成另一个RDD对象,思考的重心和落脚点都在RDD上。

转换函数

RDD上定义的函数分两种:

  • 一种是转换(transformation)函数,这种函数的返回值还是RDD;
  • 另一种是执行(action)函数,这种函数不再返回RDD。

RDD定义了很多转换操作函数,比如有计算map(func)、过滤filter(func)、合并数据集union(otherDataset)、根据Key聚合reduceByKey(func, [numPartitions])、连接数据集join(otherDataset, [numPartitions])、分组groupByKey([numPartitions])等十几个函数。

image

你可能感兴趣的:(Spark编程模型)