Tôi biết về sự tồn tại của https://wiki.apache.org/hadoop/AmazonS3 và những từ sau:
S3 Native FileSystem (Lược đồ URI: s3n) Một hệ thống tệp gốc để đọc và ghi các tệp thông thường trên S3. Ưu điểm của hệ thống tệp này là bạn có thể truy cập các tệp trên S3 đã được viết bằng các công cụ khác. Ngược lại, các công cụ khác có thể truy cập các tệp được viết bằng Hadoop. Điểm bất lợi là giới hạn 5GB về kích thước tệp do S3 áp đặt.
S3A (Lược đồ URI: s3a) Kế thừa cho S3 Native, s3n fs, S3a: system sử dụng các thư viện của Amazon để tương tác với S3. Điều này cho phép S3a hỗ trợ các tệp lớn hơn (không giới hạn 5 GB), hoạt động hiệu suất cao hơn và hơn thế nữa. Hệ thống tệp được thiết kế để thay thế / kế nhiệm cho S3 Native: tất cả các đối tượng có thể truy cập từ s3n: // URL cũng phải có thể truy cập được từ s3a chỉ bằng cách thay thế lược đồ URL.
Hệ thống tệp tin khối S3 (Lược đồ URI: s3) Hệ thống tệp tin dựa trên khối được S3 hỗ trợ. Các tệp được lưu trữ dưới dạng khối, giống như chúng ở HDFS. Điều này cho phép thực hiện hiệu quả việc đổi tên. Hệ thống tệp này yêu cầu bạn cung cấp một nhóm cho hệ thống tệp - bạn không nên sử dụng một nhóm hiện có chứa các tệp hoặc ghi các tệp khác vào cùng một nhóm. Các tệp được hệ thống tệp này lưu trữ có thể lớn hơn 5GB, nhưng chúng không thể tương thích với các công cụ S3 khác.
Tại sao một thay đổi chữ cái trên URI có thể tạo ra sự khác biệt như vậy? Ví dụ
val data = sc.textFile("s3n://bucket-name/key")
đến
val data = sc.textFile("s3a://bucket-name/key")
Sự khác biệt kỹ thuật cơ bản thay đổi này là gì? Có bất kỳ bài báo tốt mà tôi có thể đọc về điều này?
s3a
lược đồ. Có thể câu trả lời nên được sửa đổi.