Je connais l'existence de https://wiki.apache.org/hadoop/AmazonS3 et les mots suivants:
S3 Native FileSystem (schéma URI: s3n) Un système de fichiers natif pour lire et écrire des fichiers normaux sur S3. L'avantage de ce système de fichiers est que vous pouvez accéder aux fichiers sur S3 qui ont été écrits avec d'autres outils. À l'inverse, d'autres outils peuvent accéder aux fichiers écrits avec Hadoop. L'inconvénient est la limite de 5 Go de taille de fichier imposée par S3.
S3A (schéma URI: s3a) Successeur du S3 Native, s3n fs, le système S3a: utilise les bibliothèques d'Amazon pour interagir avec S3. Cela permet à S3a de prendre en charge des fichiers plus volumineux (plus de limite de 5 Go), des opérations plus performantes, etc. Le système de fichiers est destiné à remplacer / successeur de S3 Native: tous les objets accessibles depuis les URL s3n: // doivent également être accessibles depuis s3a simplement en remplaçant le schéma d'URL.
S3 Block FileSystem (schéma URI: s3) Un système de fichiers basé sur des blocs soutenu par S3. Les fichiers sont stockés sous forme de blocs, tout comme ils le sont dans HDFS. Cela permet une implémentation efficace des renommés. Ce système de fichiers nécessite que vous dédiez un compartiment pour le système de fichiers - vous ne devez pas utiliser un compartiment existant contenant des fichiers, ni écrire d'autres fichiers dans le même compartiment. Les fichiers stockés par ce système de fichiers peuvent dépasser 5 Go, mais ils ne sont pas interopérables avec d'autres outils S3.
Pourquoi un changement de lettre sur l'URI pourrait faire une telle différence? Par exemple
val data = sc.textFile("s3n://bucket-name/key")
à
val data = sc.textFile("s3a://bucket-name/key")
Quelle est la différence technique sous-jacente à ce changement? Y a-t-il de bons articles que je peux lire à ce sujet?
s3a
schéma. Il est possible que la réponse soit révisée.