1. 程式人生 > >spark Rdd的預設分割槽

spark Rdd的預設分割槽

sparkRdd的預設分割槽有兩大因素決定:

1.spark.default.parallelism
2.檔案塊的大小

spark.default.parallelism:(預設的併發數)

本地模式下spark.default.parallelism :

spark-shell                             和spark-default.conf相關預設為4


spark-shell --master local[N] spark.default.parallelism = N (使用N個核)

偽叢集模式下:

spark-shell --master local
-cluster[x,y,z] spark.default.parallelism = x * y x為本機上啟動的executor數, y為每個executor使用的core數, z為每個 executor使用的記憶體

mesos 細粒度模式:

 Mesos fine grained mode  spark.default.parallelism = 8

Yarn模式stand模式:

spark.default.parallelism =  max(所有executor使用的core總數, 2

影響預設分割槽的因素還有spark.files.maxPartitionBytes = 128 M,分割槽的數量必須(檔案size/12M)

在不同的檔案系統中預設分割槽方式計算方式如下:

從本地檔案讀取:

rdd的分割槽數 = max(本地file的分片數, sc.defaultMinPartitions)

從hdfs分散式檔案系統:

rdd的分割槽數 = max(hdfs檔案的block數目, sc.defaultMinPartitions)

從HBase的資料表:

RDD的分割槽數為該Table的region數。

從kafka:
待續。。。。