Nói rằng tôi có ba RDD chức năng chuyển kêu gọi rdd1:Bộ nhớ cache Spark RDD sẽ đi bao xa?
def rdd2 = rdd1.f1
def rdd3 = rdd2.f2
def rdd4 = rdd3.f3
Bây giờ tôi muốn bộ nhớ cache rdd4
, vì vậy tôi gọi rdd4.cache()
.
Câu hỏi của tôi:
sẽ chỉ là kết quả từ hành động trên rdd4
được lưu trữ hoặc mỗi RDD trên rdd4
sẽ được lưu trữ? Giả sử tôi muốn lưu bộ nhớ cache cả hai rdd3
và rdd4
, tôi có cần lưu chúng vào bộ nhớ cache riêng không?
Đánh giá cao câu trả lời của bạn. Vì vậy, bất cứ khi nào sẽ có một ngã ba, bạn cần phải bộ nhớ cache mà rdd để giảm tính toán lặp đi lặp lại. Nỗi đau duy nhất là không khoan nhượng trên rdd lưu trữ (vì tôi có nhiều ngã ba trên sự biến đổi rdd của tôi). Tôi sẽ đọc lại bài báo. Cảm ơn – EdwinGuo
@EdwinGuo không trích dẫn tôi về điều này nhưng tôi nghĩ hầu hết mọi người thấy rằng dành thêm thời gian để unpersist thường rắc rối hơn nó có giá trị, nó tốt hơn để cho JVM xử lý này như unresisting là một hoạt động rất tốn kém – aaronman
ok, tôi có nên mở ra một câu hỏi khác không? cố gắng tìm kiếm người không khoan nhượng, không may mắn. "Đánh dấu RDD là không liên tục và xóa tất cả các khối cho nó khỏi bộ nhớ và đĩa." từ gitHub, đã không đề cập đến nhiều – EdwinGuo