Tôi muốn một cách để trả về các hàng từ RDD của tôi tại một thời điểm (hoặc theo lô nhỏ) để tôi có thể thu thập các hàng cục bộ khi tôi cần chúng. RDD của tôi đủ lớn để nó không thể khớp với bộ nhớ trên nút tên, do đó, chạy collect()
sẽ gây ra lỗi.thu thập RDD với bộ đệm trong pyspark
Có cách nào để tạo lại hoạt động collect()
nhưng với trình tạo, để các hàng từ RDD được chuyển vào bộ đệm không? Một tùy chọn khác sẽ là take()
100000 hàng cùng một lúc từ RDD được lưu trong bộ nhớ cache, nhưng tôi không nghĩ rằng take()
cho phép bạn chỉ định vị trí bắt đầu?
Có điều gì khiến bạn muốn tránh "saveAsTextFile" không? Bởi vì bạn có thể tuôn ra mọi thứ vào một tệp và sau đó đọc nó thông qua bộ đệm. –
@ paul-k Tôi hiện đang sử dụng saveAsTextFile, tuy nhiên điều này có một vài vấn đề: 1) thời gian đọc chậm, vì đây là các tệp văn bản và 2) Tôi mất thông tin về kiểu dữ liệu, vì vậy '1' cũng giống như 1 – mgoldwasser
Đó là sự thật 2) vẫn là một vấn đề nhưng bạn vẫn có thể viết thông tin loại mặc dù điều này không phải là rất kinh tế về kích thước tập tin. bạn cũng có thể gọi SaveAsPickleFile để sắp xếp các đối tượng. 1) Tôi không nghĩ rằng điều này sẽ chậm hơn so với việc thực hiện thực tế của 'thu thập' vì nó đọc từ một tập tin tạm thời theo các tài liệu: ps: //spark.apache.org/docs/0.7.2/api/pyspark /pyspark.rdd-pysrc.html#RDD.collect –