Spark编程指南V1.4.0(翻译),编程指南v1.4.0
Spark编程指南V1.4.0
· 简介
· 接入Spark
· Spark初始化
· 使用Shell
· 在集群上部署代码
· 弹性分布式数据集
· 并行集合(Parallelized Collections)
· 其他数据集
· RDD的操作
· 基础操作
· 向Spark传递函数
· 处理键值对
· 转换
· 动作
· RDD的持久化
· 存储级别的选择
· 移除数据
· 共享变量
· 广播变量
· 累加器
· 部署到一个集群上
· 单元测试
· 从1.0之前版本的Spark迁移
· 下一步该怎么做
简介
总的来说,每一个Spark的应用,都是由一个驱动程序(driver program)构成,它运行用户的main函数,在一个集群上执行各种各样的并行操作。Spark提出的最主要抽象概念是弹性分布式数据集 (resilientdistributed dataset,RDD),它是一个元素集合,划分到集群的各个节点上,可以被并行操作。RDDs的创建可以从HDFS(或者任意其他支持Hadoop文件系统)上的一个文件开始,或者通过转换驱动程序(driver program)中已存在的Scala集合而来。用户也可以让Spark保留一个RDD在内存中,使其能在并行操作中被有效的重复使用。最后,RDD能自动从节点故障中恢复。
Spark的第二个抽象概念是共享变量(shared variables),可以在并行操作中使用。在默认情况下,Spark通过不同节点上的一系列任务来运行一个函数,它将每一个函数中用到的变量的拷贝传递到每一个任务中。有时候,一个变量需要在任务之间,或任务与驱动程序之间被共享。Spark支持两种类型的共享变量:广播变量,可以在内存的所有的结点上缓存变量;累加器:只能用于做加法的变量,例如计数或求和。
本指南将用每一种Spark支持的语言来展示这些特性。这都是很容易来跟着做的如果你启动了Spark的交互式Shell或者Scala的bin/spark-shell或者Python的bin/pyspark。
接入Spark
Scala
Spark1.2.1需要和Scala2.10一起使用。如果你要用Scala来编写应用,你需要用一个相应版本的Scala(例如2.10.X)。
要写一个Spark应用程序,你需要在添加Spark的Maven依赖,Spark可以通过Maven中心库来获得:
groupId = org.apache.spark artifactId = spark-core_2.10 version = 1.2.1
除此之外,如果你想访问一个HDFS集群,你需要根据你的HDFS版本,添加一个hadoop-client的依赖。一些通用的HDFS版本标签在第三方发行版页面列出。
groupId = org.apache.hadoop artifactId = hadoop-client version = <your-hdfs-version>
最后,你需要将一些Spark的类和隐式转换导入到你的程序中。通过如下语句:
import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ import org.apache.spark.SparkConf
Java
Spark1.2.1需要运行在Java6及更高版本上。如果你正在使用Java8,Spark支持使用Lambda表达式简洁地编写函数,或者你可以使用在org.apache.spark.api.java.function包中的类。
要使用Java编写Spark应用程序,你需要添加一个Spark的依赖。Spark可以通过Maven中心库获得:
groupId = org.apache.spark artifactId = spark-core_2.10 version = 1.2.1
此外,如果你想访问一个HDFS集群

