Khi giảm số lượng phân vùng, người dùng có thể sử dụng coalesce
, điều này thật tuyệt vì nó không gây ra ngẫu nhiên và có vẻ hoạt động ngay lập tức (không yêu cầu thêm giai đoạn công việc).Spark: tăng số lượng phân vùng mà không gây ra ngẫu nhiên?
Tôi muốn làm điều ngược lại đôi khi, nhưng repartition
gây ra ngẫu nhiên. Tôi nghĩ rằng một vài tháng trước, tôi thực sự đã làm việc này bằng cách sử dụng CoalescedRDD
với balanceSlack = 1.0
- vì vậy điều sẽ xảy ra là nó sẽ phân chia một phân vùng sao cho vị trí phân vùng kết quả trong đó tất cả trên cùng một nút (vì vậy mạng nhỏ IO).
Loại chức năng này là tự động trong Hadoop, một trong những chỉ cần chỉnh kích thước phân chia. Nó dường như không hoạt động theo cách này trong Spark trừ khi một người đang giảm số lượng phân vùng. Tôi nghĩ rằng giải pháp có thể là viết một phân vùng tùy chỉnh cùng với RDD tùy chỉnh mà chúng tôi định nghĩa getPreferredLocations
... nhưng tôi nghĩ đó là một điều đơn giản và phổ biến để làm chắc chắn phải có một cách tiến thẳng về phía trước?
Những điều thử:
.set("spark.default.parallelism", partitions)
trên tôi SparkConf
, và khi trong bối cảnh của việc đọc gỗ Tôi đã thử sqlContext.sql("set spark.sql.shuffle.partitions= ...
, mà trên 1.0.0 gây lỗi và không thực sự muốn tôi muốn, tôi muốn phân vùng số để thay đổi trên tất cả các loại công việc, chứ không phải chỉ là xáo trộn.
Bất kỳ may mắn nào tìm được giải pháp cho điều này? – nbubis