Spark Tutorials 01 : Introduce To Spark
spark tutorials
Spark 是一个用来实现 快速而通用 的集群计算平台。
Spark由许多组件组成,包括:
- Spark Core : Spark Core 实现了Spark的基本功能,包含任务调度,内存管理,错误恢复,与存储系统交互等模块。Spark Core 还包含了对RDD的API定义。
- Spark SQL : Spark SQL 是spark用来操作结构化数据的程序包。
- Spark Streaming : Spark Streaming 是Spark提供的对实时数据进行流式计算的组件。
- MLib : 机器学习功能的程序库
- GraphX : 用来操作图的程序库(比如社交网络的朋友关系图)
Spark初始使用
例子中使用的是:
- JDK 1.7
- spark-1.4.1-bin-hadoop2.6
- 虚拟机
下载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》