spark編程指南中文版.pdf
http://www.www.srpcoatings.com
2020年11月16日
![]() |
| 第1頁 |
![]() |
| 第5頁 |
![]() |
| 第17頁 |
![]() |
| 第34頁 |
![]() |
| 第104頁 |
參見附件(3388KB,106頁)。
spark編程指南中文版
Spark是UC Berkeley AMP lab (加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室)所開源的類Hadoop MapReduce的通用并行框架,從高層次上來看,每一個(gè)Spark應(yīng)用都包含一個(gè)驅(qū)動(dòng)程序,用于執(zhí)行用戶的main函數(shù)以及在集群上運(yùn)行各種并行操作
相關(guān)內(nèi)容部分預(yù)覽








書籍介紹
Spark是UC Berkeley AMP lab (加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室)所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。
Spark 是一種與 Hadoop 相似的開源集群計(jì)算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負(fù)載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。
Spark 是在 Scala 語言中實(shí)現(xiàn)的,它將 Scala 用作其應(yīng)用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對(duì)象一樣輕松地操作分布式數(shù)據(jù)集。
盡管創(chuàng)建 Spark 是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實(shí)際上它是對(duì) Hadoop 的補(bǔ)充,可以在 Hadoop 文件系統(tǒng)中并行運(yùn)行。通過名為 Mesos 的第三方集群框架可以支持此行為。
Spark 由加州大學(xué)伯克利分校 AMP 實(shí)驗(yàn)室 (Algorithms, Machines, and People Lab) 開發(fā),可用來構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序。
如何連接Spark
Spark1.3.0只支持Python2.6或更高的版本(但不支持Python3)。它使用了標(biāo)準(zhǔn)的CPython解釋器,所以諸如NumPy一類的C庫也是可以使用的。
通過Spark目錄下的bin/spark-submit腳本你可以在Python中運(yùn)行Spark應(yīng)用。這個(gè)腳本會(huì)載入Spark的Java/Scala庫然后讓你將應(yīng)用提交到集群中。你可以執(zhí)行bin/pyspark來打開Python的交互命令行。
如果你希望訪問HDFS上的數(shù)據(jù),你需要為你使用的HDFS版本建立一個(gè)PySpark連接。常見的HDFS版本標(biāo)簽都已經(jīng)列在了這個(gè)第三方發(fā)行版頁面。
最后,你需要將一些Spark的類import到你的程序中。加入如下這行:
from pyspark import SparkContext, SparkConf
什么是spark
總的來說,每個(gè)Spark的應(yīng)用。都是由一個(gè)驅(qū)動(dòng)程序(driver program)構(gòu)成。它執(zhí)行用戶的main函數(shù),在一個(gè)集群上執(zhí)行各種各樣的并行操作。
Spark提出的最主要抽象概念是彈性分布式數(shù)據(jù)集 (resilientdistributed dataset,RDD)。它是一個(gè)元素集合,劃分到集群的各個(gè)節(jié)點(diǎn)上,能夠被并行操作。
RDDs的創(chuàng)建能夠從HDFS(或者隨意其它支持Hadoop文件系統(tǒng))上的一個(gè)文件開始,或者通過轉(zhuǎn)換驅(qū)動(dòng)程序(driver program)中已存在的Scala集合而來。
用戶也能夠讓Spark保留一個(gè)RDD在內(nèi)存中,使其能在并行操作中被有效的反復(fù)使用。最后,RDD能自己主動(dòng)從節(jié)點(diǎn)故障中恢復(fù)。Spark的第二個(gè)抽象概念是共享變量(shared variables),能夠在并行操作中使用。在默認(rèn)情況下,Spark通過不同節(jié)點(diǎn)上的一系列任務(wù)來執(zhí)行一個(gè)函數(shù),它將每個(gè)函數(shù)中用到的變量的拷貝傳遞到每個(gè)任務(wù)中。有時(shí)候,一個(gè)變量須要在任務(wù)之間,或任務(wù)與驅(qū)動(dòng)程序之間被共享。Spark支持兩種類型的共享變量:廣播變量,能夠在內(nèi)存的全部的結(jié)點(diǎn)上緩存變量;累加器:僅僅能用于做加法的變量。比如計(jì)數(shù)或求和。
本指南將用每一種Spark支持的語言來展示這些特性。這都是非常easy來跟著做的假設(shè)你啟動(dòng)了Spark的交互式Shell或者Scala的bin/spark-shell或者Python的bin/pyspark。
如何初始化Spark
ScalaSpark程序須要做的第一件事情,就是創(chuàng)建一個(gè)SparkContext對(duì)象。它將告訴Spark怎樣訪問一個(gè)集群。要?jiǎng)?chuàng)建一個(gè)SparkContext你首先須要建立一個(gè)SparkConf對(duì)象,這個(gè)對(duì)象包括你的程序的信息。每一個(gè)JVM僅僅能有一個(gè)活動(dòng)的SparkContext。在創(chuàng)建一個(gè)新的SparkContext之前你必須stop()活動(dòng)的SparkContext。
val conf = newSparkConf().setAppName(appName).setMaster(master)new SparkContext(conf)appName是你的應(yīng)用的名稱。將會(huì)在集群的Web監(jiān)控UI中顯示。
master參數(shù),是一個(gè)用于指定所連接的Spark,Mesos or Mesos 集群URL的字符串,也能夠是一個(gè)如以下所描寫敘述的用于在local模式執(zhí)行的特殊字符串“l(fā)ocal”。
在實(shí)踐中,當(dāng)執(zhí)行在一個(gè)集群上時(shí),你不會(huì)想把master硬編碼到程序中,而是啟動(dòng)spark-submit來接收它。然而。對(duì)于本地測(cè)試和單元測(cè)試。你能夠通過“l(fā)ocal”
模式執(zhí)行Spark。JavaSpark程序須要做的第一件事情,就是創(chuàng)建一個(gè)JavaSparkContext對(duì)象,它將告訴Spark怎樣訪問一個(gè)集群。
要?jiǎng)?chuàng)建一個(gè)SparkContext你首先須要建立一個(gè)SparkConf對(duì)象,這個(gè)對(duì)象包括你的程序的信息。SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
JavaSparkContext sc = newJavaSparkContext(conf);appName是你的應(yīng)用的名稱。將會(huì)在集群的Web監(jiān)控UI中顯示。master參數(shù),是一個(gè)用于指定所連接的Spark,Mesos or Mesos 集群URL的字符串,也能夠是一個(gè)如以下所描寫敘述的用于在local模式執(zhí)行的特殊字符串“l(fā)ocal”。在實(shí)踐中,當(dāng)執(zhí)行在一個(gè)集群上時(shí),你不會(huì)想把master硬編碼到程序中,而是啟動(dòng)spark-submit來接收它。
然而。對(duì)于本地測(cè)試和單元測(cè)試。你能夠通過“l(fā)ocal”模式執(zhí)行Spark。PythonSpark程序須要做的第一件事情,就是創(chuàng)建一個(gè)JavaSparkContext對(duì)象。它將告訴Spark怎樣訪問一個(gè)集群。
要?jiǎng)?chuàng)建一個(gè)SparkContext你首先須要建立一個(gè)SparkConf對(duì)象,這個(gè)對(duì)象包括你的程序的信息。conf =SparkConf().setAppName(appName).setMaster(master)sc = SparkContext(conf=conf)appName是你的應(yīng)用的名稱,將會(huì)在集群的Web監(jiān)控UI中顯示。master參數(shù),是一個(gè)用于指定所連接的Spark,Mesos or Mesos 集群URL的字符串,也能夠是一個(gè)如以下所描寫敘述的用于在local模式執(zhí)行的特殊字符串“l(fā)ocal”。
在實(shí)踐中。當(dāng)執(zhí)行在一個(gè)集群上時(shí),你不會(huì)想把master硬編碼到程序中,而是啟動(dòng)spark-submit來接收它。然而,對(duì)于本地測(cè)試和單元測(cè)試。你能夠通過“l(fā)ocal”模式執(zhí)行Spark。
spark編程指南中文版截圖



您現(xiàn)在查看是摘要介紹頁, 詳見PDF附件(3388KB,106頁)。




