好程式設計師大資料基礎教程分享TextFile分割槽問題
阿新 • • 發佈: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數就是切