Я знаю о существовании https://wiki.apache.org/hadoop/AmazonS3 и следующих слов:
S3 Native FileSystem (схема URI: s3n) Собственная файловая система для чтения и записи обычных файлов на S3. Преимущество этой файловой системы состоит в том, что вы можете получить доступ к файлам на S3, которые были написаны с помощью других инструментов. И наоборот, другие инструменты могут обращаться к файлам, написанным с использованием Hadoop. Недостатком является ограничение 5 ГБ на размер файла, налагаемый S3.
S3A (схема URI: s3a). Преемник S3 Native, s3n fs, система S3a: использует библиотеки Amazon для взаимодействия с S3. Это позволяет S3a поддерживать более крупные файлы (не более 5 ГБ), более высокую производительность и многое другое. Файловая система предназначена для замены/преемника S3 Native: все объекты, доступные из URL-адресов s3n://, также должны быть доступны из s3a, просто заменив схему URL.
S3 Block FileSystem (схема URI: s3) Файловая система на основе блоков, поддерживаемая S3. Файлы хранятся в виде блоков, как и в HDFS. Это позволяет эффективно выполнять переименование. Эта файловая система требует, чтобы вы выделили ведро для файловой системы - вы не должны использовать существующее ведро, содержащее файлы, или записывать другие файлы в одно и то же ведро. Файлы, хранящиеся в этой файловой системе, могут быть больше 5 ГБ, но они не совместимы с другими инструментами S3.
Почему изменение письма в URI может иметь такое значение? Например
val data = sc.textFile("s3n://bucket-name/key")
to
val data = sc.textFile("s3a://bucket-name/key")
Какова техническая разница, лежащая в основе этого изменения? Есть ли хорошие статьи, которые я могу прочитать по этому поводу?