第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

(為什么)我們需要在RDD上調(diào)用緩存或持久化

(為什么)我們需要在RDD上調(diào)用緩存或持久化

(為什么)我們需要在RDD上調(diào)用緩存或持久化當(dāng)從文本文件或集合(或從另一個RDD)創(chuàng)建彈性分布式數(shù)據(jù)集(RDD)時,我們是否需要顯式調(diào)用“cache”或“persist”來將RDD數(shù)據(jù)存儲到內(nèi)存中?或者默認(rèn)情況下RDD數(shù)據(jù)是以分布式方式存儲在內(nèi)存中的嗎?val textFile = sc.textFile("/user/emp.txt")根據(jù)我的理解,在上面的步驟之后,textFile是一個RDD,并且可以在節(jié)點的所有/部分內(nèi)存中使用。如果是這樣,為什么我們需要在textFile RDD上調(diào)用“cache”或“persist”呢?
查看完整描述

3 回答

?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗 獲得超11個贊

大多數(shù)RDD操作都是懶惰的。將RDD視為一系列操作的描述。RDD不是數(shù)據(jù)。所以這一行:

val textFile = sc.textFile("/user/emp.txt")

它什么都不做。它創(chuàng)建了一個RDD,上面寫著“我們需要加載這個文件”。此時未加載該文件。

需要觀察數(shù)據(jù)內(nèi)容的RDD操作不能是懶惰的。(這些被稱為動作。)一個例子是RDD.count- 告訴你文件中的行數(shù),需要讀取文件。因此,如果您編寫textFile.count,此時將讀取文件,將對行進(jìn)行計數(shù),并返回計數(shù)。

如果再打電話textFile.count怎么辦?同樣的事情:文件將被讀取并再次計數(shù)。什么都沒有存儲。RDD不是數(shù)據(jù)。

那怎么RDD.cache辦?如果您添加textFile.cache到上面的代碼:

val textFile = sc.textFile("/user/emp.txt")textFile.cache

它什么都不做。RDD.cache也是一個懶惰的操作。該文件仍未讀取。但是現(xiàn)在RDD說“讀取這個文件,然后緩存內(nèi)容”。如果您textFile.count第一次運行,則將加載,緩存和計算該文件。如果textFile.count再次呼叫,操作將使用緩存。它只會從緩存中獲取數(shù)據(jù)并計算行數(shù)。

緩存行為取決于可用內(nèi)存。例如,如果文件不適合內(nèi)存,textFile.count則會回退到通常的行為并重新讀取文件。


查看完整回答
反對 回復(fù) 2019-08-15
?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗 獲得超2個贊

我們是否需要顯式調(diào)用“cache”或“persist”來將RDD數(shù)據(jù)存儲到內(nèi)存中?

是的,僅在需要時。

RDD數(shù)據(jù)默認(rèn)以分布式方式存儲在內(nèi)存中?

沒有!

這些是為什么:

  • Spark支持兩種類型的共享變量:廣播變量,可用于緩存所有節(jié)點的內(nèi)存中的值;累加器,它們是僅“添加”到的變量,例如計數(shù)器和總和。

  • RDD支持兩種類型的操作:轉(zhuǎn)換(從現(xiàn)有數(shù)據(jù)集創(chuàng)建新數(shù)據(jù)集)和操作(在數(shù)據(jù)集上運行計算后將值返回到驅(qū)動程序)。例如,map是一個轉(zhuǎn)換,它通過一個函數(shù)傳遞每個數(shù)據(jù)集元素,并返回一個表示結(jié)果的新RDD。另一方面,reduce是一個使用某個函數(shù)聚合RDD的所有元素的操作,并將最終結(jié)果返回給驅(qū)動程序(盡管還有一個返回分布式數(shù)據(jù)集的并行reduceByKey)。

  • Spark中的所有轉(zhuǎn)換都是惰性的,因為它們不會立即計算結(jié)果。相反,他們只記得應(yīng)用于某些基礎(chǔ)數(shù)據(jù)集的轉(zhuǎn)換(例如文件)。僅當(dāng)操作需要將結(jié)果返回到驅(qū)動程序時才會計算轉(zhuǎn)換。這種設(shè)計使Spark能夠更有效地運行 - 例如,我們可以意識到通過map創(chuàng)建的數(shù)據(jù)集將用于reduce,并僅將reduce的結(jié)果返回給驅(qū)動程序,而不是更大的映射數(shù)據(jù)集。

  • 默認(rèn)情況下,每次對其執(zhí)行操作時,都可以重新計算每個轉(zhuǎn)換后的RDD。但是,您也可以使用持久化(或緩存)方法在內(nèi)存中保留RDD,在這種情況下,Spark會在群集上保留元素,以便在下次查詢時更快地訪問。還支持在磁盤上保留RDD或在多個節(jié)點上復(fù)制。

有關(guān)更多詳細(xì)信息,請查看Spark編程指南。


查看完整回答
反對 回復(fù) 2019-08-15
  • 3 回答
  • 0 關(guān)注
  • 824 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號