2017-08-16 31 views
8

Sự khác nhau giữa spark.sql.shuffle.partitionsspark.default.parallelism là gì?Sự khác nhau giữa spark.sql.shuffle.partitions và spark.default.allelism là gì?

Tôi đã cố gắng để thiết lập cả trong số họ trong SparkSQL, nhưng số nhiệm vụ của giai đoạn thứ hai luôn 200.

+0

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

Trả lời

7

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, reduceByKeyparallelize 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 
Các vấn đề liên quan