概述
原文地址: http://spark.apache.org/docs/latest/programming-guide.html
仅限交流使用,转载请注明出处。如有错误,欢迎指正!!
Henvealf/译
RDD 可以通过使用 Hadoop 文件系统中的文件或者设备程序中的 Scala 集合来创建和转换成。用户也可以让 Spark 将 RDD 吃就好在内存中,允许并行操作高效的对其重复利用。最后,RDDs 会从失败的节点中自动回复。
Spark 第二个抽象概念就是共享变量(shared variables),他能够被使用在并行操作中。默认情况下,当 Spark 在许多不用的节点上并行的运行一些 task,他就会将每个 task 用到的操作将每个变量拷贝到每个 task 中去使用。有时候,一个变量需要在task或者设备程序之间共享。Spark 提供了两种类型的共享变量:
-
broadcast variables / 广播变量 : 他能够用于将一个值缓存在所有的节点的内存中。
-
accumulators / 累加器 : 比如 counters 个 sums ,一个只能进行加操作的变量。
连接到 Spark
Java 代码
在 Maven 中,需要添加下面的依赖来引入 Spark:
groupId = org.apache.spark
artifactId = spark-core_2.11
version = 2.0.2
当然,如果你想要在 HDFS 中进行存取,你需要添加 Hadoop 依赖
groupId = org.apache.hadoop
artifactId = hadoop-client
version = <your-hdfs-version>
最后,你需要在你的程序中导入几个 Spark 类:
import org.apache.spark.api.java.JavaSparkContext
import org.apache.spark.api.java.JavaRDD
import org.apache.spark.SparkConf
Scala
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
初始化 Spark
Java
第一件事情就是创建一个 JavaSparkContext 对象,来告诉 Spark 怎样存取一个集群。 为了创建一个 SparkContext, 你要做的第一件事就是构建一个包含了你的应用的信息的 SparkConf 对象。
SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
JavaSparkContext sc = new JavaSparkContext(conf);
appName 就是你的应用展示在集群UI上的名字。 master 是一个 Spark, Mesos 或者 YARN 集群的 URL,或者指定 “local” 字符串来表明你是运行在本地模式下。我们一般不会将 master 写死,而是在使用 spark-submit 运行的时候来将他传入应用中。在本地模式或者单元测试中,你就可以使用 “local”。
Scala
和 Java 中类似,第一件事,是就是创建一个 SparkContext 对象。
val conf = new SparkConf().setAppName(appName).setMaster(master)
new SparkContext(conf)
在 Shell 中使用
Scala
在 Spark 中,SparkContext 总是内建的为你建好了,Scala 命令行中就是变量 sc。你自己创建 SparkContext 是无用的。下面有几个运行参数:
- --master 参数来指定你的 Spark 连接到哪里。
$ ./bin/spark-shell --master local[4]
- --jars 添加jar包到你的 classpath 中。
$ ./bin/spark-shell --master local[4] --jars code.jar
- --package 向 Shell 回话中添加 maven 依赖。用逗号分割:
$ ./bin/spark-shell --master local[4] --packages "org.example:example:0.1"
- --repositories 添加库
可以使用 spark-shell --help 来查看更多信息。
网友评论