2014-10-13 13 views
7

Tôi đã gặp phải một số vấn đề khi cố gắng lưu một SchemaRDD rất lớn như trong định dạng Parquet trên S3. Tôi đã đăng các câu hỏi cụ thể cho những vấn đề đó, nhưng đây là những gì tôi thực sự cần phải làm. Mã phải giống như thế nàyTiết kiệm >> 25T SchemaRDD trong định dạng Parquet trên S3

import org.apache.spark._ 
val sqlContext = sql.SQLContext(sc) 
val data = sqlContext.jsonFile("s3n://...", 10e-6) 
data.saveAsParquetFile("s3n://...") 

Tôi gặp sự cố nếu tôi có hơn 2000 phân vùng hoặc nếu có phân vùng lớn hơn 5G. Điều này đặt một giới hạn trên trên kích thước tối đa SchemaRDD tôi có thể xử lý theo cách này. Giới hạn prctical gần hơn với 1T vì kích thước phân vùng khác nhau rất nhiều và bạn chỉ cần 1 phân vùng 5G để có quá trình không thành công.

câu hỏi đối phó với những vấn đề cụ thể tôi đã gặp là

câu hỏi này là để xem nếu có bất kỳ giải pháp cho mục tiêu chính mà không nhất thiết phải giải quyết trực tiếp một vấn đề trên.


Để chưng cất thứ xuống có 2 vấn đề

  • Viết đã trở thành mảnh đơn lớn hơn 5G S # thất bại. AFAIK giới hạn này được xây dựng trong giới hạn s3n:// nhóm. Có thể cho các nhóm s3:// nhưng dường như không hoạt động với Spark và hadoop distcp từ HDFS cục bộ cũng không thể thực hiện được.

  • Viết tệp tóm tắt có xu hướng không thành công khi có 1000 phân đoạn. Dường như có nhiều vấn đề với điều này. Viết trực tiếp vào S3 tạo ra lỗi trong câu hỏi được liên kết ở trên. Việc ghi trực tiếp vào HDFS cục bộ sẽ tạo ra lỗi OOM ngay cả trên một r3.8xlớn (ram 244G) một lần khi có khoảng 5000 mảnh. Điều này dường như độc lập với khối lượng dữ liệu thực tế. Tệp tóm tắt có vẻ cần thiết để truy vấn hiệu quả.

Kết hợp các vấn đề này giới hạn Bảng xếp chồng trên S3 đến 25T. Trong thực tế nó thực sự là ít hơn đáng kể kể từ khi kích thước phân đoạn có thể thay đổi rộng rãi trong một RDD và giới hạn 5G áp dụng cho phân đoạn lớn nhất.

Tôi làm cách nào để viết >> 25D RDD làm ván sàn cho S3?

Tôi đang sử dụng Spark-1.1.0.

Trả lời

3

Từ AWS tài liệu S3:

Tổng khối lượng dữ liệu và số lượng đối tượng mà bạn có thể lưu trữ là không giới hạn. Các đối tượng Amazon S3 riêng lẻ có thể có kích thước từ 1 byte đến 5 terabyte. Đối tượng lớn nhất có thể tải lên trong một PUT đơn là 5 gigabyte. Đối với các đối tượng lớn hơn 100 megabyte, khách hàng nên cân nhắc sử dụng khả năng Tải lên đa phần.

Một cách để đi xung quanh này:

  • Attache một khối lượng EBS để hệ thống của bạn, định dạng nó.
  • Sao chép tệp vào ổ đĩa "EBS" cục bộ.
  • Chụp nhanh âm lượng, nó sẽ tự động chuyển đến S3 của bạn.

Nó cũng cung cấp tải nhỏ hơn cho trường hợp của bạn.

Để truy cập dữ liệu đó, bạn cần phải sử dụng ảnh chụp nhanh làm EBS cho một phiên bản.

Các vấn đề liên quan