spark tutorials

Spark 是一个用来实现 快速而通用 的集群计算平台。

Spark由许多组件组成,包括:

  1. Spark Core : Spark Core 实现了Spark的基本功能,包含任务调度,内存管理,错误恢复,与存储系统交互等模块。Spark Core 还包含了对RDD的API定义。
  2. Spark SQL : Spark SQL 是spark用来操作结构化数据的程序包。
  3. Spark Streaming : Spark Streaming 是Spark提供的对实时数据进行流式计算的组件。
  4. MLib : 机器学习功能的程序库
  5. GraphX : 用来操作图的程序库(比如社交网络的朋友关系图)

Spark初始使用

例子中使用的是:

  1. JDK 1.7
  2. spark-1.4.1-bin-hadoop2.6
  3. 虚拟机

下载sparke之后,上传到虚拟机上面自己指定的目录下。
运行 tar -zxvf spark-1.4.1-bin-hadoop2.6.tgz 解压。

解压之后目录结构大致如下

我们进入到Spark根目录。 并运行 bin/spark-shell
>bin/spark-shell

启动的界面大致如下图所示:

如果你启动的界面有很多Info的信息,那么进入到conf目录下面,编辑log4j.properties,将日志级别从INFO调成 WARN 级别。

至此,Spark最简单的单击环境就搭建完成了。

Spark的Hello World

学习一门语言最开始都是学习HelloWorld。 那在大数据方面,学习的第一个例子则是计算单词个数。

现在不用明白什么是flatMap, 什么是 map。 因为这些只是Spark的一些方法而已。

例子中最后求得的 counts 也是 RDD, 是一个表明 README.md 这个文件中包含的单词个数的RDD。
我们可以通过scala> counts.count() 这个方法将单词个数求出。

RDD是什么?

RDD 是Spark的核心数据抽象,Resilient Distribute Dataset (弹性分布式数据集)。

RDD 有两种操作,一种是转换(transformation),一种是行动(action)。 所谓的转换是将一个RDD通过一定的操作之后,返回另一个全新的RDD,而原来的RDD还保留在内存中,方便后续使用。例如上述例子中: map, flatMap 等

所谓的行动则是执行实际的计算,它们会将计算所得的结果返回给驱动器程序。如上述例子中的 count。 会将RDD中包含的总数返回给spark shell。

需要注意的是, RDD的转换操作是惰性求值的。惰性求值意味着当我们对RDD调用转换操作(如:map)的时候,操作不会立刻执行。同样,把数据读取到RDD的操作也是惰性的,因此,当我们调用 sc.textFile(..) 的时候,数据并没有读取进来,而是在必要的时候才会读取。 而这个必要的时候就是行动执行的时候。如: 调用 RDD的 count()方法之后,就会强制Spark执行RDD 的转换操作。

转载请注明出处! 原文地址: http://webinglin.github.io

Reference:

《OReilly.Learning.Spark.Lightning-Fast.Big.Data.Analysis》

留言

2015-11-07