Spark學習——分區Partition數

其餘更多java基礎文章:
java基礎學習(目錄)java


這部分能力有限,因此推薦一些大神文章閱讀學習:數據庫

總結

我在以個人理解簡單的歸納下,若有不對,但願你們及時斧正:spa

  • Task和Partition是一一對應的
  • 經過spark.default.parallelism設置sc.defaultParallelism的值
  • sc.defaultMinPartitions=min(sc.defaultParallelism,2)。也就是sc.defaultMinPartitions只有兩個值1和2,當sc.defaultParallelism>1時值爲2,當sc.defaultParallelism=1時,值爲1
  • sc.parallelize(…)的默認Partition值是sc.defaultParallelism的值
  • sc.textFile(…)若是不傳Partition值,絕大多數則爲HDFS中Block的數量。緣由是partition = max(hdfs文件的block數目, sc.defaultMinPartitions),因爲sc.defaultMinPartitions只能是1或2。
    • 若是hdfs文件block數量大於1時,Partition數目就是block數目。
    • 若是hdfs文件block數量等於1時,默認分區數爲sc.defaultMinPartitions,只多是1或2。當用參數指定分區數時,rdd的分區數大於等於參數值,本次測試爲等於參數值或參數值+1
  • 本地文件也會像hdfs同樣進行相似於block的劃分,固定按32M來分片。分區數 = max(本地文件的block數目, 參數值)
  • 關係型數據庫表讀取的df的分區數爲1
  • 讀取hive表建立的DataFrame的分區數,block數爲hive表對應的hdfs文件的block的數目,當sc.defaultParallelism大於block時,df的分區是等於sc.defaultParallelism,當小於block時,df的分區數介於sc.defaultParallelism和block之間

相關文章
相關標籤/搜索