spark Rdd的預設分割槽
阿新 • • 發佈:2019-01-27
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:
待續。。。。