您的位置:首页 > 产品设计 > UI/UE

spark2.0 英文翻译 Spark Programming Guide

2016-09-26 19:05 926 查看
Overview-概览

spark程序由驱动主类main和并行执行的各类操作组成,spark的主要抽象是RDD,RDD是一个可以在集群中呗并行处理的集合,

RDDs可以由hadoop支持的各类文件系统、驱动程序中已存的集合生成,并转换他们。用户可以将RDD持久到内存中,这样就支持高效的并行处理这个RDD。最后,RDDs支持节点的自动容错。

其次,第二种抽象是共享变量,它也可以被并行操作。默认的,当spark作为一个任务集在不同的节点并行的执行一个方法时,它将在方法中使用的每一个变量的copy到每一个相关的任务中。有时候一个变量需要夸任务共享,或者在任务与驱动程序间共享。spark支持两种类型的变量共享:广播变量与累加器。广播变量可以被用来把一个变量在所有节点中缓存下来。累加器是一些仅被追加的变量,例如计数器和求和器。

该指导文章将使用spark支持的各种语言展示给你spark的每一个特性。你使用交互式shell,spark-shell(支持scala)或者pyspark(支持python)中的任意一个即可。

Linking with Spark-与spark连接

spark2.0.0默认使用scala2.11构建与分布的。spark当然也可以使用其他版本的scala构建。为了使用scala写应用程序,你需要使用相匹配的scala版本,例如2.11.X

为了使用scala写应用程序,你需要添加maven依赖,如下:

groupId = org.apache.spark

artifactId = spark-core_2.11

version = 2.0.0

如果你想访问hdfs,则你需要添加如下依赖:

groupId = org.apache.hadoop

artifactId = hadoop-client

version = 你的hdfs版本

最后你需要导入spark的类:

import org.apache.spark.SparkContext

import org.apache.spark.SparkConf

(在spark1.3.0之前你需要明确的引入org.apache.spark.SparkContext._ 来确保必要的转换可以使用)

Initializing Spark-初始化spark

一个spark项目的必须的第一步是去创建一个SparkContext对象,这个对象用来告诉spark怎么连接到集群。要创建SparkContext,你又需要首先创建一个SparkConf对象,这个对象包含着你应用的信息。

每个jvm只能有一个SparkContext是激活的,在你想创建一个新的SparkContext之前你需要停止(调用stop()方法)已经激活的SparkContext。

val conf = new SparkConf().setAppName(appName).setMaster(master)

new SparkContext(conf)

appname是在ui界面显示用的你的应用的名称,master是一个spark、mesos或yarn集群的路径,或者是一个特殊的字符串”local”表明是本地模式。在实践中,当你在一个集群中运行时,你不想将spark的master地址写死在程序中,而是使用spark-submit来加载应用并接收参数。然而,对于本地的测试和单元测试,你可以使用”local”来运行spark。

Using the Shell-使用命令行工具

在spark命令行中,已经有一个特定的SparkContext提前为你创建好了,变量名叫sc,创建你自己的SparkContext将不会起作用。你可以设置SparkContext是连接到哪个master,使用 –master 参数;你也可以通过传入一个逗号分隔的列表来把jar包添加进classpath中。你也可以通过提供一个逗号分隔的maven依赖列表来添加一些依赖到你的命令行连接中,这时候你可能需要制定一个额外的maven库地址,这时候你可以通过参数–repositories来指定。例如,你可以指定以4颗cpu核心来运行spark-shell:

$ ./bin/spark-shell –master local[4]

或者添加code.jar到classpath中

$ ./bin/spark-shell –master local[4] –jars code.jar

为了加入maven依赖,你可以这么做:

$ ./bin/spark-shell –master local[4] –packages “org.example:example:0.1”

如果你想获取完整的选项,你可以通过运行spark-shell –help来获取。在这种场景下,spark-shell调用更加通用的spark-submit脚本。

Resilient Distributed Datasets (RDDs)-弹性分布式数据集

(未完待续…)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark