如何指定緩存_第1頁
如何指定緩存_第2頁
如何指定緩存_第3頁
如何指定緩存_第4頁
如何指定緩存_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

主講:張義目錄0102指定cache方法指定persist(持久化)方法指定cache方法1指定cache方法cache方法可以將RDD緩存在內(nèi)存中,如下例所示:vallogs=sc.textFile("path/to/log-files")valerrorsAndWarnings=logsfilter{l=>l.contains("ERROR")||l.contains("WARN")}errorsAndWarnings.cache()指定cache方法valerrorLogs=errorsAndWarningsfilter[l=>l.contains("ERROR")}valwarningLogs=errorsAndWarningsfilter{l=>l.contains("WARN")}valerrorCount=errorLogs.countvalwarningcount=warningLogs.count指定cache方法RDD是否正在被緩存?testRdd.cache()testRdd.count()testRdd.collect()由于RDD是在執(zhí)行第一個操作之前被緩存的,而不是之后,因此,只有collect操作可以使用緩存的值。指定cache方法如果應用程序不會多次讀取數(shù)據(jù)集,則緩存實際上會使作業(yè)更慢。使用緩存是需要付出代價的。如果由于緩存導致的內(nèi)存壓力成本大于避免重新計算RDD所帶來的好處,在該情況下,緩存并不是一個合適的機制。如果可以輕松地重新計算數(shù)據(jù)集,且應用程序不會多次訪問它,則重新計算可能更快。指定persist(持久化)方法2指定persist(持久化)方法將RDD存儲在內(nèi)存中以使后續(xù)的計算使用的第二種方法是調(diào)用persist方法。可以將持久化視為緩存RDD的一種更通用的方法,因為其不僅僅允許指定內(nèi)存類型的存儲來存儲RDD如果調(diào)用persist方法時不附加任何參數(shù),其工作方式與cache方法相似,即存儲RDD到內(nèi)存中。例如:vallines=sc.textFile(/data/examples/datal.txt)lines.persist()指定persist(持久化)方法cache(緩存)和persist(持久性)都在做同樣的事情,即臨時存儲RDD,兩種方法默認的存儲類型都是內(nèi)存。這兩種方法的區(qū)別在于persist方法允許指定特定的存儲類型來存儲RDD。如果你比較關心內(nèi)存的使用且認為當前使用了過多的內(nèi)存,則除了內(nèi)存之外,還有其他存儲類型可選。如果決定存儲RDD且其與當前JVM內(nèi)存不匹配,則可以指定其他存儲級別,如下所示。指定persist(持久化)方法MEMORY_ONLY:默認存儲級別,將RDD作為反序列化的Java對象進行存儲,如果內(nèi)存中沒有足夠的空間用于RDD存儲,在需要時會對無法緩存的RDD分區(qū)進行重新計算,例如:vallines=sc.textFile(/data/examples/datal.txt)lines.persist(MEMORY_ONLY)MEM_AND_DISK:將RDD作為反序列化Java對象存儲在內(nèi)存中,如果沒有足夠的內(nèi)存空間,則將分區(qū)存儲在磁盤上以供將來讀取。例如:testRdd.persist(StorageLevel.MEMORY_AND_DISK)指定persist(持久化)方法MEMORY_ONLY_SER;將RDD作為序列化Java對象存儲在內(nèi)存中(默認情況下,以反序列化形式存儲),這樣可以提高空間使用效率。但是,這也意味著后期在讀取這些數(shù)據(jù)時,需要更多的CPU來進行序列化文件的解析。指定此存儲級別的方法如下所示:testRdd.persist(StorageLevel.MEMORY_ONLY_SER)MEMORY_AND_DISK_SER:與MEMORY_ONLY_SER級別類似,但使用磁盤存儲不適合存儲于內(nèi)存中的分區(qū)。例如:testRdd.persist(StorageLevel.MEMORY_AND_DISK_SER)指定persist(持久化)方法DISK_ONLY:跳過內(nèi)存,將所有的RDD分區(qū)存儲于磁盤上,例如:testRdd.persist(StorageLevel.DISK_ONLY)MEMORY_ONLY_2,MEMORY_AND_DISK_2等:這些存儲層級的工作方式與前面描述的相應存儲級別類似,不同之處在于每個分區(qū)都存儲在兩個節(jié)點上以實現(xiàn)彈性恢復。設置此存儲級別的方式如下所示:指定persist(持久化)方法testRdd.persist(StorageLevel.MEMORY_ONLY_2)testRdd.persist(StorageLevel.MEMORY_ONLY_SER_2)testRdd.persist(StorageLev

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論