Spark的基本概念是什么

今天就跟大家聊聊有關(guān)Spark的基本概念是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了昌都免費(fèi)建站歡迎大家使用!

Spark簡(jiǎn)介

Spark的基本概念是什么

Apache Spark是專(zhuān)為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。目前已經(jīng)形成一個(gè)高速發(fā)展應(yīng)用廣泛
的生態(tài)系統(tǒng)。

Apache Spark特性:
1,快速
        大多數(shù)操作均在內(nèi)存中迭代,只有少部分函數(shù)需要落地到磁盤(pán)。
2,易用性
        支持scala、Java、Python、R等語(yǔ)言;提供超過(guò)80個(gè)算子,API使用及其方便。
3,通用性
        Spark提供了針對(duì)數(shù)據(jù)處理的一站式解決方案,計(jì)算時(shí)用Spark Core算子(替代Hadoop Map/Reduce)
        ,批處理時(shí)用Spark SQL(替代HiveSQL),實(shí)時(shí)計(jì)算用Spark Streaming(替代Stom),機(jī)器學(xué)習(xí)用
        Spark MLlib(替代Mahout);另外,通過(guò)Spark GraphX進(jìn)行圖計(jì)算。
4,跨平臺(tái)
        Spark可以使用Local模式,Standalone模式,Cluster模式運(yùn)行。
        Local模式:在本地運(yùn)行調(diào)試,支持?jǐn)帱c(diǎn),可以指定并行線程數(shù)。
        Standalone模式:Spark管理資源,有Master和Worker,相當(dāng)于ResourceManager和NodeManager。
        Cluster模式:分布式模式,用于生產(chǎn)環(huán)境。資源管理器使用Yarn或者M(jìn)esos。
 

Spark的適用場(chǎng)景
目前大數(shù)據(jù)處理場(chǎng)景有以下幾個(gè)類(lèi)型:
復(fù)雜的批量處理(Batch Data Processing),偏重點(diǎn)在于處理海量數(shù)據(jù)的能力,至于處理速度可忍受,通常的時(shí)間可能是在數(shù)十分鐘到數(shù)小時(shí);
基于歷史數(shù)據(jù)的交互式查詢(xún)(Interactive Query),通常的時(shí)間在數(shù)十秒到數(shù)十分鐘之間
基于實(shí)時(shí)數(shù)據(jù)流的數(shù)據(jù)處理(Streaming Data Processing),通常在數(shù)百毫秒到數(shù)秒之間

Spark成功案例
目前大數(shù)據(jù)在互聯(lián)網(wǎng)公司主要應(yīng)用在金融、廣告、報(bào)表、推薦系統(tǒng)等業(yè)務(wù)上。在廣告業(yè)務(wù)方面需要大數(shù)據(jù)做應(yīng)用分析、效果分析、定向優(yōu)化等,在推薦系統(tǒng)方面則需要大數(shù)據(jù)優(yōu)化相關(guān)排名、個(gè)性化推薦以及熱點(diǎn)點(diǎn)擊分析等。這些應(yīng)用場(chǎng)景的普遍特點(diǎn)是計(jì)算量大、效率要求高。 騰訊 / 小米 / 淘寶 / 優(yōu)酷土豆

Hadoop Map/Reduce與Spark

Spark的基本概念是什么

Spark的基本概念是什么

Spark的發(fā)展歷史

Spark的基本概念是什么

Spark的版本發(fā)展

Spark的基本概念是什么

Spark的基本概念是什么

Spark的基本概念是什么

Scala與函數(shù)式編程

Scala介紹
        Scala 是一門(mén)多范式(multi-paradigm)的編程語(yǔ)言,設(shè)計(jì)初衷是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。Scala 運(yùn)行在Java虛擬機(jī)上,并兼容現(xiàn)有的Java程序。

特性
1,面向?qū)ο?br/>        Scala是一種純面向?qū)ο蟮恼Z(yǔ)言,每個(gè)值都是對(duì)象。對(duì)象的數(shù)據(jù)類(lèi)型以及行為由類(lèi)和特質(zhì)(trait)描述。
2,函數(shù)式編程
        Scala也是一種函數(shù)式語(yǔ)言,其函數(shù)也能當(dāng)成值來(lái)使用。Scala提供了輕量級(jí)的語(yǔ)法用以定義匿名函數(shù),支持高階函數(shù),允許嵌套多層函 數(shù),并支持柯里化。Scala的case class及其內(nèi)置的模式匹配相當(dāng)于函數(shù)式編程語(yǔ)言中常用的代數(shù)類(lèi)型。
3,靜態(tài)類(lèi)型
        Scala具備類(lèi)型系統(tǒng),通過(guò)編譯時(shí)檢查,保證代碼的安全性和一致性。
4,并發(fā)性
       Scala使用Actor作為其并發(fā)模型,Actor是類(lèi)似線程的實(shí)體,通過(guò)郵箱發(fā)收消息。Actor可以復(fù)用線程,因此可以在程序中可以使用數(shù)百萬(wàn)個(gè)Actor,而線程只能創(chuàng)建數(shù)千個(gè)。在2.10之后的版本中,使用Akka作為其默認(rèn)Actor實(shí)現(xiàn)。

函數(shù)式編程
        函數(shù)式編程是種編程方式,它將電腦運(yùn)算視為函數(shù)的計(jì)算。函數(shù)編程語(yǔ)言最重要的基礎(chǔ)是λ演算(lambda calculus),而且λ演算的函數(shù)可以接受函數(shù)當(dāng)作輸入(參數(shù))和輸出(返回值)。
特性
1,函數(shù)是第一等公民
        函數(shù)編程支持函數(shù)作為第一類(lèi)對(duì)象,有時(shí)稱(chēng)為閉包或者仿函數(shù)(functor)對(duì)象。
2,惰性計(jì)算
        在惰性計(jì)算中,表達(dá)式不是在綁定到變量時(shí)立即計(jì)算,而是在求值程序需要產(chǎn)生表達(dá)式的值時(shí)進(jìn)行計(jì)算。延遲的計(jì)算使您可以編寫(xiě)可能潛在地生成無(wú)窮輸出的函數(shù)。
3,支用表達(dá)式不用語(yǔ)句
       "表達(dá)式"(expression)是一個(gè)單純的運(yùn)算過(guò)程,總是有返回值;"語(yǔ)句"(statement)是執(zhí)行某種操作,沒(méi)有返回值。函數(shù)式編程要求,只使用表達(dá)式,不使用語(yǔ)句。也就是說(shuō),每一步都是單純的運(yùn)算,而且都有返回值。
sc.thriftParquetFile(fileStr, classOf[SomeClass], force = true).filter(infor => infor.classId == CLASSID_REPAY).persist(StorageLevel.DISK_ONLY)
4,沒(méi)有"副作用"
       所謂"副作用"(side effect),指的是函數(shù)內(nèi)部與外部互動(dòng)(最典型的情況,就是修改全局變量的值),產(chǎn)生運(yùn)算以外的其他結(jié)果。
函數(shù)式編程強(qiáng)調(diào)沒(méi)有"副作用",意味著函數(shù)要保持獨(dú)立,所有功能就是返回一個(gè)新的值,沒(méi)有其他行為,尤其是不得修改外部變量的值。

Spark RDD特性

RDD(Resilient Distributed Datasets),彈性分布式數(shù)據(jù)集,它是對(duì)分布式數(shù)據(jù)集的一種內(nèi)存抽象,通過(guò)受限的共享內(nèi)存方式來(lái)提供容錯(cuò)性,同時(shí)這種內(nèi)存模型使得計(jì)算比傳統(tǒng)的數(shù)據(jù)流模型要高效。RDD具有5個(gè)重要的特性,如下圖所示:

1.一組分區(qū),數(shù)據(jù)集的基本組成單位。
2.計(jì)算每一個(gè)數(shù)據(jù)分區(qū)的函數(shù)。
3.對(duì)parent RDD的依賴(lài),這個(gè)依賴(lài)描述了RDD之間的lineage(血統(tǒng))。
4.可選,對(duì)于鍵值對(duì)RDD,有一個(gè)Partitioner(通常是HashPartitioner,RangePartitioner)。
5.可選,一組Preferred location信息(例如,HDFS文件的Block所在location信息)。

Spark的基本概念是什么

Spark算子

Spark對(duì)數(shù)據(jù)的處理過(guò)程包括輸入、運(yùn)行轉(zhuǎn)換、輸出等過(guò)程,而這些過(guò)程在Spark中以算子的形式定義。 算子是RDD中定義的函數(shù),可以對(duì)RDD中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換和操作。

Spark的基本概念是什么

從大方向來(lái)說(shuō),Spark算子大致可以分為以下兩類(lèi):
1)Transformation 變換/轉(zhuǎn)換算子:這種變換并不觸發(fā)提交作業(yè),完成作業(yè)中間過(guò)程處理。
         Transformation 操作是延遲計(jì)算的,也就是說(shuō)從一個(gè)RDD 轉(zhuǎn)換生成另一個(gè) RDD 的轉(zhuǎn)換操作不是馬上執(zhí)行,
需要等到有 Action 操作的時(shí)候才會(huì)真正觸發(fā)運(yùn)算。
        按照處理數(shù)據(jù)的結(jié)構(gòu)類(lèi)型,Transformation算子又可以分為以下兩類(lèi):
    a)Value數(shù)據(jù)類(lèi)型的Transformation算子,這種變換并不觸發(fā)提交作業(yè),針對(duì)處理的數(shù)據(jù)項(xiàng)是Value型數(shù)據(jù)
    b)Key-Value數(shù)據(jù)類(lèi)型的Transformation算子,這種變換并不觸發(fā)提交作業(yè),針對(duì)處理的數(shù)據(jù)項(xiàng)是
          Key-Value型的數(shù)據(jù)對(duì)。

2)Action行動(dòng)算子:這類(lèi)算子會(huì)觸發(fā)SparkContext提交Job作業(yè)。
        Action 算子會(huì)觸發(fā) Spark 提交作業(yè)(Job),并將數(shù)據(jù)輸出 Spark系統(tǒng)。

1)Value型數(shù)據(jù)類(lèi)型的Transformation算子
        A)輸入分區(qū)與輸出分區(qū)一對(duì)一型
	a) map算子
	b) flatMap算子
	c) mapPartitions算子
	d) glom算子
        B)輸入分區(qū)與輸出分區(qū)多對(duì)一型
	a) union算子
	b) cartesian算子
        C)輸入分區(qū)與輸出分區(qū)多對(duì)多型
	a) groupBy算子
        D)輸出分區(qū)為輸入分區(qū)子集型
 	a) filter算子
	b) distinct算子
	c) subtract算子
	d) sample算子
	e) takeSample算子
        E)Cache型
	a) cache算子
	d) persist算子

2)Key-Value型數(shù)據(jù)類(lèi)型的Transformation算子
        A)輸入分區(qū)與輸出分區(qū)一對(duì)一型
	a) mapValues算子
        B)對(duì)單個(gè)RDD聚集
	a) combineByKey算子
	b) reduceByKey算子
	c) partitionBy算子
        C)對(duì)兩個(gè)RDD聚集
	a) Cogroup算子
        D)連接
 	a) join算子
	b) leftOutJoin算子
	c) rightOutJoin算子

3)Action算子
        A)無(wú)輸出
	a) foreach算子
        B)HDFS
	a) saveAsTextFile算子
	b) saveAsObjectFile算子
        C)集合和數(shù)據(jù)類(lèi)型
	a) collect算子
	b) collectAsMap算子
	c) reduceByKeyLocally算子
	d) lookup算子
	e) count算子
	f) top算子
	g) reduce算子
	h) fold算子
	i) aggregate算子
	
4)數(shù)據(jù)加載的Transformation算子
        A)文件讀取
	a) textFile算子
        B)內(nèi)存生成
	a) makeRDD算子
	b) parallelize算子

Spark算子-Value型

1)map: 對(duì)RDD中的每個(gè)元素都執(zhí)行一個(gè)指定的函數(shù)類(lèi)(映射)產(chǎn)生一個(gè)新的RDD。任何原RDD中的元素在新RDD中都有且只有一個(gè)元素與之對(duì)應(yīng)。當(dāng)然map也可以把Key元素變成Key-Value對(duì)。

Spark的基本概念是什么

2)flatMap:將原來(lái) RDD 中的每個(gè)元素通過(guò)函數(shù) f 轉(zhuǎn)換為新的元素,并將生成的 RDD 的每個(gè)集合中的元素合并為一個(gè)集合。

Spark的基本概念是什么

3) mapPartiions:map是對(duì)rdd中的每一個(gè)元素進(jìn)行操作,而mapPartitions (foreachPartition)則是對(duì)rdd中的每個(gè)分區(qū)的迭代器進(jìn)行操作mapPartitions效率比map高的多。mapPartitions函數(shù)獲取到每個(gè)分區(qū)的迭代器,在函數(shù)中通過(guò)這個(gè)分區(qū)整體的迭代器對(duì)整個(gè)分區(qū)的元素進(jìn)行操 作。

Spark的基本概念是什么

4) glom:將分區(qū)元素轉(zhuǎn)換成數(shù)組。

Spark的基本概念是什么

5) union:相同數(shù)據(jù)類(lèi)型RDD進(jìn)行合并,并不去重。

Spark的基本概念是什么

6)cartesian:對(duì)RDD內(nèi)的所有元素進(jìn)行笛卡爾積操作

Spark的基本概念是什么

7) groupBy:將元素通過(guò)函數(shù)生成相應(yīng)的 Key,數(shù)據(jù)就轉(zhuǎn)化為 Key-Value 格式,之后將 Key 相同的元素分為一組。
Spark的基本概念是什么

8)filter:對(duì)RDD元素進(jìn)行過(guò)濾操作

Spark的基本概念是什么

9)distinct:對(duì)RDD中的元素去重操作

Spark的基本概念是什么

10)subtract:RDD間進(jìn)行減操作,去除相同數(shù)據(jù)元素(去掉含有重復(fù)的項(xiàng))

Spark的基本概念是什么

11)sample:對(duì)RDD元素進(jìn)行采樣操作,獲取所有元素的子集(按照比例隨機(jī)抽樣)

Spark的基本概念是什么

12)takesample:上面的sample函數(shù)是一個(gè)原理,不同的是不使用相對(duì)比例采樣,而是按設(shè)定的采樣個(gè)數(shù)進(jìn)行采樣

Spark的基本概念是什么

Spark算子-Key-Value型

1)mapValues:(對(duì)Value值進(jìn)行變換)原RDD中的Key保持不變,與新的Value一起組成新的RDD中的元素。因此,該函數(shù)只適用于元素為KV對(duì)的RDD。即針對(duì)(Key, Value)型數(shù)據(jù)中的 Value 進(jìn)行 Map 操作,而不對(duì) Key 進(jìn)行處理。
Spark的基本概念是什么

2)combineByKey:(按key聚合)相當(dāng)于將元素為 (Int, Int) 的 RDD轉(zhuǎn)變?yōu)榱?(Int,Seq[Int]) 類(lèi)型元素的 RDD。

Spark的基本概念是什么

3)reduceByKey:reduceByKey 是比 combineByKey 更簡(jiǎn)單的一種情況,只是兩個(gè)值合并成一個(gè)值,即相同的key合并value。

Spark的基本概念是什么

4)partitionBy:按key值對(duì)RDD進(jìn)行重新分區(qū)操作。

Spark的基本概念是什么

5)cogroup:按key值聚集操作。

Spark的基本概念是什么

6)join:按key值聯(lián)結(jié)。

Spark的基本概念是什么

Spark算子-Action算子

1)foreach:循環(huán)遍歷每一個(gè)元素。

Spark的基本概念是什么

2)saveAsTextFile:將最終的結(jié)果數(shù)據(jù)以文本格式保存到指定的HDFS目錄中

Spark的基本概念是什么

3)saveAsObjectFile:將最終的結(jié)果數(shù)據(jù)以二進(jìn)制文件格式保存到指定的HDFS目錄中

Spark的基本概念是什么

4)collect:收集元素

Spark的基本概念是什么

5)collectAsMap: 收集key/value型的RDD中的元素

Spark的基本概念是什么

6)reduceByKeyLocally:實(shí)現(xiàn)的是先reduce再collectAsMap的功能,先對(duì)RDD的整體進(jìn)行reduce操作,然后再收集所有結(jié)果返回為一個(gè)HashMap

7)lookup:查找元素,對(duì)(Key,Value)型的RDD操作,搜索指定Key對(duì)應(yīng)的元素

Spark的基本概念是什么

8)count:計(jì)算元素個(gè)數(shù)

Spark的基本概念是什么

9)top:top(n)尋找值最大的前n個(gè)元素

10)reduce:通過(guò)函數(shù)func先聚集各分區(qū)的數(shù)據(jù)集,再聚集分區(qū)之間的數(shù)據(jù),func接收兩個(gè)參數(shù),返回一個(gè)新值,新值再做為參數(shù)繼續(xù)傳遞給函數(shù)func,直到最后一個(gè)元素

11)fold:合并

12)aggregateByKey:采用歸并的方式進(jìn)行數(shù)據(jù)聚合操作,這種聚集是并行化的,通過(guò)key進(jìn)行聚合。

看完上述內(nèi)容,你們對(duì)Spark的基本概念是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)頁(yè)題目:Spark的基本概念是什么
URL地址:http://bm7419.com/article16/jdedgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站收錄、企業(yè)建站品牌網(wǎng)站制作、云服務(wù)器、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)