1. 程式人生 > >好程式設計師大資料基礎教程分享TextFile分割槽問題

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

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數就是切