欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

spark中RDD算子的示例分析

這篇文章主要介紹了spark中RDD算子的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、龍湖ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的龍湖網(wǎng)站制作公司

Value型Transformation算子

處理數(shù)據(jù)類型為Value型的Transformation算子可以根據(jù)RDD變換算子的輸入分區(qū)與輸出分區(qū)關(guān)系分為以下幾種類型。

1)輸入分區(qū)與輸出分區(qū)一對一型。

2)輸入分區(qū)與輸出分區(qū)多對一型。

3)輸入分區(qū)與輸出分區(qū)多對多型。

4)輸出分區(qū)為輸入分區(qū)子集型。

5)還有一種特殊的輸入與輸出分區(qū)一對一的算子類型:Cache型。Cache算子對RDD分區(qū)進(jìn)行緩存。

這里的對應(yīng)指的是分區(qū)依賴的對應(yīng)

spark中RDD算子的示例分析

1.輸入分區(qū)與輸出分區(qū)一對一型

(1)map(func)

map是對RDD中的每個元素都執(zhí)行一個指定的函數(shù)來產(chǎn)生一個新的RDD,新RDD叫作MappedRDD(this, sc.clean(f))。任何原RDD中的元素在新RDD中都有且只有一個元素與之對應(yīng)。

圖3-4中的每個方框表示一個RDD分區(qū),左側(cè)的分區(qū)經(jīng)過用戶自定義函數(shù)f:T->U映射為右側(cè)的新的RDD分區(qū)。但是實際只有等到Action算子觸發(fā)后,這個f函數(shù)才會和其他函數(shù)在一個Stage中對數(shù)據(jù)進(jìn)行運算。V1輸入f轉(zhuǎn)換輸出V’1。

spark中RDD算子的示例分析

(2)flatMap(func)

類似于map,但是每一個輸入元素,會被映射為0到多個輸出元素(因此,func函數(shù)的返回值是一個Seq,而不是單一元素)。內(nèi)部創(chuàng)建 FlatMappedRDD(this, sc.clean(f))。

圖3-5中小方框表示RDD的一個分區(qū),對分區(qū)進(jìn)行flatMap函數(shù)操作,flatMap中傳入的函數(shù)為f:T->U,T和U可以是任意的數(shù)據(jù)類型。將分區(qū)中的數(shù)據(jù)通過用戶自定義函數(shù)f轉(zhuǎn)換為新的數(shù)據(jù)。外部大方框可以認(rèn)為是一個RDD分區(qū),小方框代表一個集合。V1、V2、V3在一個集合作為RDD的一個數(shù)據(jù)項,轉(zhuǎn)換為V’1、V’2、V’3后,將結(jié)合拆散,形成為RDD中的數(shù)據(jù)項。

spark中RDD算子的示例分析

(3)mapPartitions(func)

mapPartitions是map的一個變種。map的輸入函數(shù)是應(yīng)用于RDD中每個元素,而mapPartitions的輸入函數(shù)是應(yīng)用于每個分區(qū),也就是把每個分區(qū)中的內(nèi)容作為整體來處理的。

mapPartitions函數(shù)獲取到每個分區(qū)的迭代器,在函數(shù)中通過這個分區(qū)整體的迭代器對整個分區(qū)的元素進(jìn)行操作。內(nèi)部實現(xiàn)是生成MapPartitionsRDD。圖3-6中的方框代表一個RDD分區(qū)。

圖3-6中,用戶通過函數(shù)f (iter )=>iter.filter(_>=3)對分區(qū)中的所有數(shù)據(jù)進(jìn)行過濾,>=3的數(shù)據(jù)保留。一個方塊代表一個RDD分區(qū),含有1、2、3的分區(qū)過濾只剩下元素3。

spark中RDD算子的示例分析

(4)glom()

glom函數(shù)將每個分區(qū)形成一個數(shù)組,內(nèi)部實現(xiàn)是返回的GlommedRDD。圖3-7中的每個方框代表一個RDD分區(qū)。

圖3-7中的方框代表一個分區(qū)。該圖表示含有V1、V2、V3的分區(qū)通過函數(shù)glom形成一個數(shù)組Array[(V1),(V2),(V3)]。

spark中RDD算子的示例分析

2.輸入分區(qū)與輸出分區(qū)多對一型

(1)union(otherDataset)

使用union函數(shù)時需要保證兩個RDD元素的數(shù)據(jù)類型相同,返回的RDD數(shù)據(jù)類型和被合并的RDD元素數(shù)據(jù)類型相同,并不進(jìn)行去重操作,保存所有元素。如果想去重,可以使用distinct()。++符號相當(dāng)于uion函數(shù)操作。

圖3-8中左側(cè)的大方框代表兩個RDD,大方框內(nèi)的小方框代表RDD的分區(qū)。右側(cè)大方框代表合并后的RDD,大方框內(nèi)的小方框代表分區(qū)。含有V1,V2…U4的RDD和含有V1,V8…U8的RDD合并所有元素形成一個RDD。V1、V1、V2、V8形成一個分區(qū),其他元素同理進(jìn)行合并。

spark中RDD算子的示例分析

(2)cartesian(otherDataset)

對兩個RDD內(nèi)的所有元素進(jìn)行笛卡爾積操作。操作后,內(nèi)部實現(xiàn)返回CartesianRDD。

左側(cè)的大方框代表兩個RDD,大方框內(nèi)的小方框代表RDD的分區(qū)。右側(cè)大方框代表合并后的RDD,大方框內(nèi)的小方框代表分區(qū)。大方框代表RDD,大方框中的小方框代表RDD分區(qū)。 例如,V1和另一個RDD中的W1、 W2、 Q5進(jìn)行笛卡爾積運算形成(V1,W1)、(V1,W2)、(V1,Q5)。

spark中RDD算子的示例分析

3.輸入分區(qū)與輸出分區(qū)多對多型

groupBy (func)

將元素通過函數(shù)生成相應(yīng)的Key,數(shù)據(jù)就轉(zhuǎn)化為Key-Value格式,之后將Key相同的元素分為一組。
圖中,方框代表一個RDD分區(qū),相同key的元素合并到一個組。 例如,V1,V2合并為一個Key-Value對,其中key為“ V” ,Value為“ V1,V2” ,形成V,Seq(V1,V2)。

spark中RDD算子的示例分析

4.輸出分區(qū)為輸入分區(qū)子集型

(1)filter(func)

filter的功能是對元素進(jìn)行過濾,對每個元素應(yīng)用f函數(shù),返回值為true的元素在RDD中保留,返回為false的將過濾掉。內(nèi)部實現(xiàn)相當(dāng)于生成FilteredRDD(this,sc.clean(f))。
圖3-11中的每個方框代表一個RDD分區(qū)。T可以是任意的類型。通過用戶自定義的過濾函數(shù)f,對每個數(shù)據(jù)項進(jìn)行操作,將滿足條件,返回結(jié)果為true的數(shù)據(jù)項保留。例如,過濾掉V2、V3保留了V1,將區(qū)分命名為V1'。

spark中RDD算子的示例分析

(2)distinct([numTasks]))

distinct將RDD中的元素進(jìn)行去重操作。圖3-12中的方框代表RDD分區(qū)。

圖3-12中的每個方框代表一個分區(qū),通過distinct函數(shù),將數(shù)據(jù)去重。例如,重復(fù)數(shù)據(jù)V1、V1去重后只保留一份V1。

spark中RDD算子的示例分析

(3)subtract(other, numPartitions=None)

subtract相當(dāng)于進(jìn)行集合的差操作,RDD 1去除RDD 1和RDD 2交集中的所有元素。

圖3-13中左側(cè)的大方框代表兩個RDD,大方框內(nèi)的小方框代表RDD的分區(qū)。右側(cè)大方框代表合并后的RDD,大方框內(nèi)的小方框代表分區(qū)。V1在兩個RDD中均有,根據(jù)差集運算規(guī)則,新RDD不保留,V2在第一個RDD有,第二個RDD沒有,則在新RDD元素中包含V2。

spark中RDD算子的示例分析

(4)sample(withReplacement, fraction, seed=None)

sample將RDD這個集合內(nèi)的元素進(jìn)行采樣,獲取所有元素的子集。用戶可以設(shè)定是否有放回的抽樣、百分比、隨機(jī)種子,進(jìn)而決定采樣方式。

內(nèi)部實現(xiàn)是生成SampledRDD(withReplacement, fraction, seed)。

函數(shù)參數(shù)設(shè)置如下。

withReplacement=true,表示有放回的抽樣;

withReplacement=false,表示無放回的抽樣。

圖3-14中的每個方框是一個RDD分區(qū)。通過sample函數(shù),采樣50%的數(shù)據(jù)。V1、V2、U1、U2、U3、U4采樣出數(shù)據(jù)V1和U1、U2,形成新的RDD。

spark中RDD算子的示例分析

(5)takeSample(withReplacement, num, seed=None)

takeSample()函數(shù)和上面的sample函數(shù)是一個原理,但是不使用相對比例采樣,而是按設(shè)定的采樣個數(shù)進(jìn)行采樣,同時返回結(jié)果不再是RDD,而是相當(dāng)于對采樣后的數(shù)據(jù)進(jìn)行Collect(),返回結(jié)果的集合為單機(jī)的數(shù)組。

圖3-15中左側(cè)的方框代表分布式的各個節(jié)點上的分區(qū),右側(cè)方框代表單機(jī)上返回的結(jié)果數(shù)組。通過takeSample對數(shù)據(jù)采樣,設(shè)置為采樣一份數(shù)據(jù),返回結(jié)果為V1。

spark中RDD算子的示例分析

5.Cache型

(1)cache

cache將RDD元素從磁盤緩存到內(nèi)存,相當(dāng)于persist(MEMORY_ONLY)函數(shù)的功能。圖3-14中的方框代表RDD分區(qū)。

圖3-16中的每個方框代表一個RDD分區(qū),左側(cè)相當(dāng)于數(shù)據(jù)分區(qū)都存儲在磁盤,通過cache算子將數(shù)據(jù)緩存在內(nèi)存。

spark中RDD算子的示例分析

(2)persist(storageLevel=StorageLevel(False, True, False, False, 1))

persist函數(shù)對RDD進(jìn)行緩存操作。數(shù)據(jù)緩存在哪里由StorageLevel枚舉類型確定。有以下幾種類型的組合(見圖3-15),DISK代表磁盤,MEMORY代表內(nèi)存,SER代表數(shù)據(jù)是否進(jìn)行序列化存儲。

下面為函數(shù)定義,StorageLevel是枚舉類型,代表存儲模式,用戶可以通過圖3-17按需選擇。

圖3-17中列出persist函數(shù)可以緩存的模式。例如,MEMORY_AND_DISK_SER代表數(shù)據(jù)可以存儲在內(nèi)存和磁盤,并且以序列化的方式存儲。其他同理。圖中,方框代表RDD分區(qū)。 disk代表存儲在磁盤,mem代表存儲在內(nèi)存。 數(shù)據(jù)最初全部存儲在磁盤,通過persist(MEMORY_AND_DISK)將數(shù)據(jù)緩存到內(nèi)存,但是有的分區(qū)無法容納在內(nèi)存,例如:圖3-18中將含有V1,V2,V3的RDD存儲到磁盤,將含有U1,U2的RDD仍舊存儲在內(nèi)存。spark中RDD算子的示例分析

spark中RDD算子的示例分析

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“spark中RDD算子的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

網(wǎng)頁名稱:spark中RDD算子的示例分析
本文URL:http://aaarwkj.com/article24/gpeije.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、Google、網(wǎng)站維護(hù)、電子商務(wù)標(biāo)簽優(yōu)化、動態(tài)網(wǎng)站

廣告

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

成都網(wǎng)站建設(shè)
欧美激情网页一区三区| 精品一二三四五区亚洲乱码| 亚洲国产精品久久久久久99| 国内精品免费视频不卡| 亚洲国产欧美日韩一区| 国产欧美亚洲精品一区二区| 久草视频免费福利观看| 自偷自拍亚洲综合精品| 亚洲国产精品成人女人| 国产三级黄色片免费看| 国产丝袜美腿在线观看| 国产精品视频一区二区噜| 蜜臀av午夜福利在线| 中文岳妇荡欲丰满肥熟| 亚洲丰满性感美女av| 一本久久综合亚洲鲁鲁五月天 | 熟妇丰满多毛的大阴户| 国产精品欧美日韩中文| 日本精品在线一区二区| 永久免费成人在线视频| 在线观看永久免费黄色| 丰满熟妇久久人妻同堂av| av第一福利大全导航| 日本一区二区不卡高清| 亚洲精品在线免费av| 深夜视频在线观看成人| av在线成人国产精品欧美| 少妇高潮毛片免费看高潮| 亚洲成人av在线直播| 蜜桃免费观看在线视频| 中文字幕二区三区av| 免费不卡无码毛片观看| 日韩爱视频一区二区| 国产精品国产精品三级在线观看| 亚洲黄色成人在线观看| 暖暖免费中文高清日本三区| 欧美午夜福利一级高清| 亚洲熟妇亚洲熟妇亚洲熟妇| 羞羞的视频免费观看在线| 91人妻一区二区三区久久| 色综合久久婷婷色综合网|