好程式設計師大資料基礎教程分享TextFile分割槽問題

好程式設計師IT發表於2019-06-27

val  rdd1 = sc.parallelize(List(2,3,4,1,7,5,6,9,8))
獲取分割槽的個數 :rdd1.partitions.length,在spark-shell中沒有指定分割槽的個數獲取的是預設分割槽數,除了這個外parallelize方法可以使用,指定幾個分割槽就會有幾個分割槽出現

val  rdd1 = sc.textFile("hdfs://hadoop02:8020/word.txt",3).flatMap _.split('')).map((_,1)).reduceByKey(_+_)
textFile這個方法是有預設值就是2 除非改變loacl中的即預設值這個只要這個預設值小於2的話會使用小於預設的值

這個預設屬性是有值的 defaultMinPartitions

如果在 textfile中傳入了分割槽數,那麼這個分割槽數可能相同也可能不同需要看底層計算!

下面就是分片了 ,這個就是為什麼textfile傳入的引數和實際輸出的分割槽可能不符合的原因

總結 :

textFile中沒有指定分割槽的情況下都是預設大小2,除非指定小於2的值

若在 textFile中指定了分割槽,name切分檔案工作,實際上是計算出多少切分大小即多少切分一下,然後將檔案按照這個大小切分成多份,最後partition數就是切分檔案的個數。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2648970/,如需轉載,請註明出處,否則將追究法律責任。

相關文章