là Từ câu trả lời here, spark.sql.shuffle.partitions
cấu hình số lượng các phân vùng được sử dụng khi xáo trộn dữ liệu cho tham gia hoặc tập hợp.
spark.default.parallelism
là số mặc định của các phân vùng trong RDD
s trả về bởi biến đổi như join
, reduceByKey
và parallelize
khi không được thiết lập một cách rõ ràng bởi người sử dụng. Lưu ý rằng spark.default.parallelism
dường như chỉ hoạt động đối với raw RDD
và bị bỏ qua khi làm việc với các khung dữ liệu.
Nếu tác vụ bạn đang thực hiện không phải là phép nối hoặc tập hợp và bạn đang làm việc với các khung dữ liệu thì việc thiết lập các tác vụ này sẽ không có hiệu lực. Tuy nhiên, bạn có thể tự đặt số phân vùng bằng cách gọi số df.repartition(numOfPartitions)
(đừng quên gán nó cho một mã mới val
) trong mã của bạn.
Để thay đổi các thiết lập trong mã của bạn, bạn chỉ đơn giản có thể làm:
sqlContext.setConf("spark.sql.shuffle.partitions", "300")
sqlContext.setConf("spark.default.parallelism", "300")
Ngoài ra, bạn có thể thực hiện thay đổi khi nộp công việc cho một cluster với spark-submit
:
./bin/spark-submit --conf spark.sql.shuffle.partitions=300 --conf spark.default.parallelism=300
gia tăng một số thông tin bổ sung, đừng ngần ngại hỏi xem bạn có bất kỳ câu hỏi hoặc thông tin tiếp theo nào không. – Shaido