《Spark1.6.1官方文档》Spark1.6.1操作攻略-Java-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝26
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:193回复:0

  《Spark1.6.1官方文档》Spark1.6.1操作攻略

楼主#
更多 发布于:2016-05-19 16:18

 《Spark1.6.1官方文档》Spark1.6.1操作攻略

原文连接  译者:小村长

本项目是 Apache

Spark1.6.1方文档的中文翻译版,之前翻译过spark1.5,因为网站有组织翻译Spark1.6.1所以我又从头翻译了一下,我翻译的这一章和spark1.5相同。本次翻译首要针对对Spark感兴趣和致力于从事大数据办法开发的人员供给有价值的中文资料,期望能够对咱们的作业和学习有所协助。

这个翻译本应该在二月份完结,因为一向出差加上加班致使短短一篇文章迟迟没有完结,在此想咱们表明深深的抱歉。同时也期望有才能的童鞋能够一同努力推进大数据在中国的开展,让天下没有难学的技能谢谢咱们。

Quick Start

交互剖析(Interactive Spark

ShellAnalysis with the Spark Shell)

基础(Basics)

RDD上更多操作(More on RDD

Operations)

缓存Caching

独立运用(Self-Contained

Applications)

下一章(Where to Go from Here)

本篇文章介绍了Spark迅速入门.

咱们将首次经过Spark的Shell介绍API(经过 Python 或Scala), 然后展现怎样经过Java,Scala和Python写运用. 看

编程攻略了解更多信息.

跟着下面辅导, 第一步下载安装包从 Spark官方网址.

咱们不会运用HDFS,你能够下载一个匹配任何Hadoop版别的发行版别.

Spark Shell交互剖析

基础

Spark Shell供给了一个简略学习API的方法,

同时它也是一个有用的交互剖析东西. 它能够运用Scala(它是一种运转在Java虚拟机上而且能够运用Java依靠包)或许Python.

切换到Spark目录并发动依照以下方法发动它:

Scala

Python

./bin/spark-shell

Spark的首要抽象是一个分布式数据集被称为弹性分布式数据集

(RDD). RDDs能够经过Hadoop上面的输入格式( 例如 HDFS 文件)或许经过别的的RDD变换.

让咱们经过Spark目录中的README文件创立一个新的RDD:

scala> val textFile =

sc.textFile("README.md") textFile: spark.RDD[String] =

spark.MappedRDD@2ee9b6e3

RDDs 有actions(我翻译成操作因子), 它能够回来值,

和transformations(变换), 它能够回来一个新的RDDs. Let’s start with a few actions:

scala> textFile.count() //

Number of items in this RDD res0: Long = 126 scala> textFile.first() // First

item in this RDD res1: String = # Apache Spark

如今让咱们运用变换操作.咱们将运用 filter

变换操作回来一个新的RDD包括这个文件的子集.

scala> val linesWithSpark =

textFile.filter(line => line.contains("Spark")) linesWithSpark:

spark.RDD[String] = spark.FilteredRDD@7dd4af09

咱们能够经过链式编程把transformations 操作和

actions操作连接一同:

scala> textFile.filter(line

=> line.contains("Spark")).count() // How many lines contain "Spark"? res3:

Long = 15

更多的RDD操作

RDD操作因子和变换因子能够用来进行愈加复杂的核算.让咱们寻找到需求的数据:

Scala

Python

scala> textFile.map(line

=> line.split(" ").size).reduce((a, b) => if (a > b) a else b) res4:

Long = 15

第一个map一行整数数值,创立一个新的RDD.reduce被调用来查找最多数据一行的数据个数.map的参数和reduce的参数是Scala函数自变量(闭包),咱们能够运用任何Scala或Java的语言的特性.

例如, 咱们很简略的调用在别的当地界说的函数. 咱们运用Math.max()函数使代码很简略了解:

scala> import java.lang.Math

import java.lang.Math scala> textFile.map(line => line.split("

").size).reduce((a, b) => Math.max(a, b)) res5: Int = 15

通用的数据处理流程是MapReduce,Hadoop广泛运用.

Spark很简略的承继MapReduce核算流程:

scala> val wordCounts =

textFile.flatMap(line => line.split(" ")).map(word => (word,

1)).reduceByKey((a, b) => a + b) wordCounts: spark.RDD[(String, Int)] =

spark.ShuffledAggregatedRDD@71f027b8

这儿, 咱们组合了 flatMap, map,

和reduceByKey 变换因子来核算文件中每个单词的数量经过一个RDD (String, Int) 对. 经过Shell计算奇数的数量, 咱们能够运用

collect 因子:

scala> wordCounts.collect()

res6: Array[(String, Int)] = Array((means,1), (under,2), (this,3), (Because,1),

(Python,2), (agree,1), (cluster.,1), ...)

缓存

Spark也支撑把一个数据集放到一个集群的缓存里边.当数据屡次拜访它很有用,例如当你查询一个常用的数据集或许运转一个

PageRank算法的时分. 举一个简略的比如, 让咱们把linesWithSpark数据集缓存起来:

Scala

Python

scala> linesWithSpark.cache()

res7: spark.RDD[String] = spark.FilteredRDD@17e51082 scala>

linesWithSpark.count() res8: Long = 19 scala> linesWithSpark.count() res9:

Long = 19

它也许是不明智的用Spark阅读和缓存一个100行的数据.

这个有些一般运用在大的数据集上, 当集群有十个乃至成千上百个节点的时分. 你也能够经过bin/spark-shell来连接集群, 更多的描绘请看

programming guide.

独立的运用

假设我期望开发一个独立的运用经过Spark API.

咱们能够经过 Scala (with sbt), Java (with Maven), and Python来调用开发Spark API.

Scala

Java

Python

如今咱们创立一个简略的Spark运用,实际上,

它的姓名是SimpleApp.scala:

/* SimpleApp.scala */ import

org.apache.spark.SparkContext import org.apache.spark.SparkContext._ import

org.apache.spark.SparkConf object SimpleApp {   def main(args: Array[String]) {

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

system     val conf = new SparkConf().setAppName("Simple Application")     val

sc = new SparkContext(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的子类也许不能准确的作业.

这个程序仅仅是计算README文件中包括‘a’和‘b’的数量.留意你需求更换你的本地的YOUR_SPARK_HOME

环境变量. 不同于前面的Spark shell比如, 它需求初始化SparkContext, 咱们需求初始化

SparkContext作为程序运转的一有些.

咱们需求创立一个 SparkConf

目标,它包括了咱们运用所包括的信息.

咱们的运用依靠Spark API, 所以咱们也包括sbt

装备文件,simple.sbt, 它包括了Spark的一些依靠. 这个文件添加一个库房,而这些库房是Spark运转不行缺少的一有些:

name := "Simple Project" version

:= "1.0" scalaVersion := "2.10.5" libraryDependencies += "org.apache.spark" %%

"spark-core" % "1.6.1"

为了使 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

下一章

装备运转你的第一个Spark程序!

想深入的了解SparkAPI, 能够打开 Spark

programming guide, 或许看“Programming Guides” 菜单了解别的组件.

假如想在集群上面运转引证, 能够点击 deployment

overview了解.

最终, Spark包括几个简略的实例 (Scala, Java,

Python, R). 你能够依照下面的实例运转他们:

# For Scala and Java, use

run-example: ./bin/run-example SparkPi # For Python examples, use spark-submit

directly: ./bin/spark-submit examples/src/main/python/pi.py # For R examples,

use spark-submit directly: ./bin/spark-submit

examples/src/main/r/dataframe.R

优质IT资源分享社区为你提供此文。 [font=Tahoma  ]

本站有大量优质Java教程视频,资料等资源,包含java基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。 [font=Tahoma  ]

java教程视频

优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客