【Spark1.3官方翻译】Spark快速入门

英文标题:Quick Start

英文原址:http://spark.apache.org/docs/latest/quick-start.html

Spark Version:1.3.0

1,       使用Spark-Shell进行交互式分析

1.1   基本使用

Spark-shell为学习API提供了简单的方式,它是一个非常强大的进行交互式数据分析的工具,在Scala或Python中都有提供。在Spark目录中运行下面的命令:


./bin/spark-shell

Spark的主要抽象是一个分布式数据集合,叫做弹性分布式数据集(RDD),可以通过读取HDFS文件或转换其它RDD来创建RDD,下面示例表示的是通过读取一个HDFS文件来创建RDD:


val textFile = sc.textFile(“README.md”)

RDD有transformation和action两种操作,前者返回一个指向新RDD的指针,后者返回值。下面是一些action操作:


textFile.count()

textFile.first()

下面是一些transformation操作,用filter过滤出文件中的Spark行得到一个新的RDD:


val linesWithSpark = textFile.filter(line => line.contains(“Spark”))

可以把transformation和action串起来:


textFile.filter(line => line.contains(“Spark”)).count()//计算了README.md文件中有多少行包含Spark这个单词

1.2   更多RDD操作

可以用transformation和action来做很多更复杂的计算,例如下面的示例是找出所有行中单行的最多单词数


textFile.map(line => line.split(“ “).size).reduce((a,b) => if(a>b) a else b)

这行代码首先将一行映射成一个整数值(单词数)生成一个RDD,在这个RDD上调用reduce找出最大size最大的一个。Map和reduce的参数是Scala中的函数,可以使用其大量的语言特性或Scala/Java库,例如,可以使用其他语言声明的包使得上面的代码更易理解:


import java.lang.Math

textFile.map(line => line.split(“ “).size).reduce((a,b) => Math.max(a,b))

一个通用的数据模型是MapReduce,Spark可以轻松地实现MapReduce:


val wordCounts = textFile.flatMap(line => line.split(“ “)).map(word => (word,1)).reduceByKey((a,b) => a+b)

这里结合了flatMap,map,reduceByKey几个转换计算每一个单词的数以(String,Int)对作为一个RDD,在Shell中合并这些单词数,可以用collect这个action:


wordCounts.collect

1.3   缓存(Caching)

Spark支持将数据集放到集群的内存中进行缓存,这对于要重复使用的数据非常管用,例如查询小的热点数据集或者运行类似于PageRank的迭代算法,下面的示例将linesWithSpark数据集进行缓存:


linesWithSpark.cache()

linesWithSpark.count()

linesWithSpark.count()

看上去用Spark缓存一个100行的文件挺愚蠢的,但是有意思的是相同的函数也可以被用在很大的数据上,而且效果一样,即使它们跨上百个节点存储,你可以用bin/spark-shell交互式的连接到一个集群。

2,       独立的应用程序

使用Spark API写一个独立应用程序,下面从一个简单的程序开始(Scala&SBT):


/* SimpleApp.scala */

importorg.apache.spark.SparkContext

importorg.apache.spark.SparkContext._

importorg.apache.spark.SparkConf

objectSimpleApp{

def main(args:Array[String]){

val logFile="YOUR_SPARK_HOME/README.md"//
Should be some file on your system

val conf=newSparkConf().setAppName("Simple
Application")

val sc=newSparkContext(conf)

val logData=
sc.textFile(logFile,2).cache()

val numAs=
logData.filter(line=> line.contains("a")).count()

val numBs=
logData.filter(line=> line.contains("b")).count()

println("Lines with a: %s, Lines with b: %s".format(numAs,
numBs))

}

}

注意,应用程序必须定义一个main()函数而不是继承scala.App,scala.App的子类可能不会正确的运行(Why?)。

这个程序分别计算了README.md文件中包含a和b的行数,在程序中你要用自己的Spark_HOME替换掉YOUR_SPARK_HOME。独立程序不像Spark-Shell启动时会初始化自己的SparkContext,而是需要将初始化SparkContext作为程序的一部分。

给SparkContext构造器传递一个SparkConf对象,这个对象包含了应用程序的相关信息。应用程序依赖于Spark API,所以还要有一个SBT的配置文件,下面的simple.sbt解释了Spark依赖,此依赖还添加了Spark依赖的一些库。

name:="Simple Project"
version:="1.0"
scalaVersion:="2.10.4"
libraryDependencies+="org.apache.spark"%%"spark-core"%"1.3.0"

为了使SBT正常工作,得根据目录结构来布局SimpleApp.scala和simple.sbt,如果位置正确的话,就可以创建包含独立应用程序的Jar包了,然后使用spark-submit脚本运行我们的程序。

# Your directory layout should look like this
$ find .
.
./simple.sbt
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala
# Package a jar containing your application
$ sbt package
...
[info] Packaging {..}/{..}/target/scala-2.10/simple-project_2.10-1.0.jar
# Use spark-submit to run your application
$ YOUR_SPARK_HOME/bin/spark-submit \
  --class "SimpleApp"\
  --master local[4]\
  target/scala-2.10/simple-project_2.10-1.0.jar
...
Lines with a: 46, Lines with b: 23

转载请注明出处。

时间: 2024-10-02 20:47:52

【Spark1.3官方翻译】Spark快速入门的相关文章

spark快速入门与WordCount程序机制深度解析 spark研习第二季

2.spark wordCount程序深度剖析 标签: spark 一.Eclipse(scala IDE)开发local和cluster (一). 配置开发环境 要在本地安装好java和scala. 由于spark1.6需要scala 2.10.X版本的.推荐 2.10.4,java版本最好是1.8.所以提前我们要需要安装好java和scala并在环境变量中配置好. 下载scala IDE for eclipse安装 连接:http://scala-ide.org/download/sdk.h

spark快速入门

  spark框架是用scala写的,运行在Java虚拟机(JVM)上.支持Python.Java.Scala或R多种语言编写客户端应用. 下载Spark   访问http://spark.apache.org/downloads.html选择预编译的版本进行下载. 解压Spark   打开终端,将工作路径转到下载的spark压缩包所在的目录,然后解压压缩包.可使用如下命令: cd ~ tar -xf spark-2.2.2-bin-hadoop2.7.tgz -C /opt/module/ c

Spark快速入门(1)

1 安装Spark 首先,到 https://spark.apache.org/downloads.html 选择最新的 Spark 版本和 Hadoop 版本(实际上我们暂时用不上 Hadoop,所以任何版本都行),然后下载压缩包. 完毕后,将其中的文件夹解压到某个特定的位置,比如,我将解压出的文件夹命名为spark,并放在我的主文件夹 /home/qyx 里,这样我就可以执行 /home/qyx/spark/bin/spark-shell 来运行 Spark 的终端了.为了避免每次打开 Sp

大数据入门之Spark快速入门及导入数据,求平均值

运行环境 本文的具体运行环境如下: CentOS 7.6 Spark 2.4 Hadoop 2.6.0 Java JDK 1.8 Scala 2.10.5 一.下载安装 首先在官网 https://spark.apache.org/downloads.html 下载对应版本的Spark 丢到你的服务器上 自己的路径 比如 /user/hadoop/My_Spark 解压 tar -xvf XXX.tar.gz(你的压缩包名称) 然后 记录你的 路径  /user/hadoop/My_Spark/

Spark快速入门的简单程序案例

参考:官网的quick start 1.上传文件README 2.小程序 3.继续 4.继续

【SFA官方翻译】使用 Kubernetes、Spring Boot 2.0 和 Docker 的微服务快速指南

[SFA官方翻译]使用 Kubernetes.Spring Boot 2.0 和 Docker 的微服务快速指南 原创: Darren Luo SpringForAll社区 今天 原文链接:https://dzone.com/articles/quick-guide-to-microservices-with-kubernetes-sprin 作者:Piotr Mińkowski 译者:Darren Luo 在本教程中你将学习如何使用 Kubernetes 和 Docker 快速启动并运行 Sp

【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)

编译并运行快速入门 需要在VisualStudio 2010上运行此快速入门示例 代码下载:ModularityWithMef.zip 先重新生成解决方案 再按F5运行此示例 说明: 在此快速入门示例解决方案的 ModularityWithMef.Desktop程序集中 加入了生成成功时的“后期生成事件命令行” IF NOT EXIST "$(TargetDir)\DirectoryModules" mkdir "$(TargetDir)\DirectoryModules&q

Spark机器学习:Spark 编程模型及快速入门

http://blog.csdn.net/pipisorry/article/details/52366356 Spark编程模型 SparkContext类和SparkConf类 我们可通过如下方式调用 SparkContext 的简单构造函数,以默认的参数值来创建相应的对象.val sc = new SparkContext("local[4]", "Test Spark App") 这段代码会创建一个4线程的 SparkContext 对象,并将其相应的任务命

Spark从入门到上手实战

Spark从入门到上手实战 课程学习地址:http://www.xuetuwuyou.com/course/186 课程出自学途无忧网:http://www.xuetuwuyou.com 讲师:轩宇老师 课程简介: Spark属于新起的基于内存处理海量数据的框架,由于其快速被众公司所青睐.Spark 生态栈框架,非常的强大,可以对数据进行批处理.流式处理.SQL 交互式处理及机器学习和Graphx 图像计算.目前绝大数公司都使用,主要在于 Spark SQL 结构化数据的处理,非常的快速,高性能