Soy consciente de la existencia de https://wiki.apache.org/hadoop/AmazonS3 y las siguientes palabras:
S3 Native FileSystem (esquema de URI: s3n) Un sistema de archivos nativo para leer y escribir archivos normales en S3. La ventaja de este sistema de archivos es que puede acceder a archivos en S3 que fueron escritos con otras herramientas. Por el contrario, otras herramientas pueden acceder a archivos escritos con Hadoop. La desventaja es el límite de 5 GB en el tamaño de archivo impuesto por S3.
S3A (esquema URI: s3a) Un sucesor del S3 Native, s3n fs, el sistema S3a: usa las bibliotecas de Amazon para interactuar con S3. Esto permite que S3a admita archivos más grandes (no más límite de 5 GB), operaciones de mayor rendimiento y más. El sistema de archivos está destinado a ser un reemplazo de / sucesor de S3 Native: todos los objetos accesibles desde s3n: // URL también deberían ser accesibles desde s3a simplemente reemplazando el esquema de URL.
S3 Block FileSystem (esquema URI: s3) Un sistema de archivos basado en bloques respaldado por S3. Los archivos se almacenan como bloques, al igual que en HDFS. Esto permite la implementación eficiente de cambios de nombre. Este sistema de archivos requiere que dediques un depósito para el sistema de archivos; no debes usar un depósito existente que contenga archivos ni escribir otros archivos en el mismo depósito. Los archivos almacenados por este sistema de archivos pueden tener un tamaño superior a 5 GB, pero no son interoperables con otras herramientas de S3.
¿Por qué un cambio de letra en el URI podría hacer tanta diferencia? Por ejemplo
val data = sc.textFile("s3n://bucket-name/key")
a
val data = sc.textFile("s3a://bucket-name/key")
¿Cuál es la diferencia técnica subyacente a este cambio? ¿Hay algún buen artículo que pueda leer sobre esto?
s3a
esquema. Es posible que la respuesta deba revisarse.