Mir ist die Existenz von https://wiki.apache.org/hadoop/AmazonS3 und die folgenden Wörter bekannt:
S3 Native FileSystem (URI-Schema: s3n) Ein natives Dateisystem zum Lesen und Schreiben regulärer Dateien in S3. Der Vorteil dieses Dateisystems besteht darin, dass Sie auf Dateien in S3 zugreifen können, die mit anderen Tools geschrieben wurden. Umgekehrt können andere Tools auf Dateien zugreifen, die mit Hadoop geschrieben wurden. Der Nachteil ist die von S3 auferlegte Beschränkung der Dateigröße auf 5 GB.
S3A (URI-Schema: s3a) Als Nachfolger des S3 Native s3n fs verwendet das S3a: -System die Bibliotheken von Amazon, um mit S3 zu interagieren. Dadurch kann S3a größere Dateien (kein Limit von mehr als 5 GB), Operationen mit höherer Leistung und mehr unterstützen. Das Dateisystem soll ein Ersatz für / Nachfolger von S3 Native sein: Alle Objekte, auf die über s3n: // URLs zugegriffen werden kann, sollten auch über s3a zugänglich sein, indem einfach das URL-Schema ersetzt wird.
S3 Block FileSystem (URI-Schema: s3) Ein blockbasiertes Dateisystem, das von S3 unterstützt wird. Dateien werden wie in HDFS als Blöcke gespeichert. Dies ermöglicht eine effiziente Implementierung von Umbenennungen. Für dieses Dateisystem müssen Sie einen Bucket für das Dateisystem reservieren. Sie sollten keinen vorhandenen Bucket mit Dateien verwenden oder andere Dateien in denselben Bucket schreiben. Die von diesem Dateisystem gespeicherten Dateien können größer als 5 GB sein, sind jedoch nicht mit anderen S3-Tools kompatibel.
Warum könnte eine Buchstabenänderung in der URI einen solchen Unterschied machen? Beispielsweise
val data = sc.textFile("s3n://bucket-name/key")
zu
val data = sc.textFile("s3a://bucket-name/key")
Was ist der technische Unterschied, der dieser Änderung zugrunde liegt? Gibt es gute Artikel, die ich dazu lesen kann?
s3a
Schemas von EMR-Jobs an S3 schreiben . Möglicherweise sollte die Antwort überarbeitet werden.