Spark 編程指南

2022-02-14 10:46 更新

概論

在高層中,每個 Spark 應(yīng)用程序都由一個驅(qū)動程序(driver programe)構(gòu)成,驅(qū)動程序在集群上運(yùn)行用戶的 ?main ?函數(shù)來執(zhí)行各種各樣的并行操作(parallel operations)。Spark 的主要抽象是提供一個彈性分布式數(shù)據(jù)集(RDD),RDD 是指能橫跨集群所有節(jié)點(diǎn)進(jìn)行并行計(jì)算的分區(qū)元素集合。RDDs 從 Hadoop 的文件系統(tǒng)中的一個文件中創(chuàng)建而來(或其他 Hadoop 支持的文件系統(tǒng)),或者從一個已有的 Scala 集合轉(zhuǎn)換得到。用戶可以要求 Spark 將 RDD 持久化(persist)到內(nèi)存中,來讓它在并行計(jì)算中高效地重用。最后,RDDs 能在節(jié)點(diǎn)失敗中自動地恢復(fù)過來。

Spark 的第二個抽象是共享變量(shared variables),共享變量能被運(yùn)行在并行計(jì)算中。默認(rèn)情況下,當(dāng) Spark 運(yùn)行一個并行函數(shù)時,這個并行函數(shù)會作為一個任務(wù)集在不同的節(jié)點(diǎn)上運(yùn)行,它會把函數(shù)里使用的每個變量都復(fù)制搬運(yùn)到每個任務(wù)中。有時,一個變量需要被共享到交叉任務(wù)中或驅(qū)動程序和任務(wù)之間。Spark 支持 2 種類型的共享變量:廣播變量(broadcast variables),用來在所有節(jié)點(diǎn)的內(nèi)存中緩存一個值;累加器(accumulators),僅僅只能執(zhí)行“添加(added)”操作,例如:記數(shù)器(counters)和求和(sums)。

這個指南會在 Spark 支持的所有語言中演示它的每一個特征。非常簡單地開始一個 Spark 交互式 shell - ?bin/spark-shell ?開始一個 Scala shell,或 ?bin/pyspark? 開始一個 Python shell。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號