私はhttps://wiki.apache.org/hadoop/AmazonS3の存在と、次の単語を知ってる:技術的にs3n、s3aとs3の違いは何ですか?
S3ネイティブファイルシステム(URIスキーム:S3N)S3上の通常のファイルを読み書きするためのネイティブファイルシステム。このファイルシステムの利点は、他のツールで書かれたS3上のファイルにアクセスできることです。逆に、他のツールはHadoopを使って書かれたファイルにアクセスすることができます。欠点は、S3によって課されるファイルサイズの5GBの制限です。
S3A(URIスキーム:s3a)S3ネイティブの後継者であるS3a:システムは、S3と対話するためにAmazonのライブラリを使用します。これにより、S3aはより大きなファイル(5GB制限なし)、より高性能な操作などをサポートします。ファイルシステムは、S3の代替/後継であることを意図しています。ネイティブ:s3n:// URLからアクセスできるすべてのオブジェクトは、単にURLスキーマを置き換えるだけでs3aからアクセス可能でなければなりません。
S3ブロックFileSystem(URIスキーム:s3)S3を基盤とするブロックベースのファイルシステム。ファイルはHDFSにあるようにブロックとして格納されます。これにより、名前の効率的な実装が可能になります。このファイルシステムでは、ファイルシステムのバケットを専用にする必要があります。ファイルを含む既存のバケットを使用したり、同じバケットに他のファイルを書き込んではいけません。このファイルシステムによって保存されるファイルは5GBを超えることができますが、他のS3ツールとの相互運用はできません。
なぜURI上の文字の変更によってそのような違いが生じるのですか?例えば
val data = sc.textFile("s3n://bucket-name/key")
val data = sc.textFile("s3a://bucket-name/key")
にこの変更の基礎となる技術的な違いは何ですか?私がこれについて読むことができる良い記事がありますか?
Amazonのサポート記事はまだ最新のようですが、今は 's3a'スキームを使用してEMRジョブからS3に書き込むことができます。答えが改訂される可能性があります。 – mlg
@mig s3aは機能するかもしれませんが、私の経験ではうまくいくようですが、AWSでは技術的にサポートされていません。だから、あなたは自分の責任でそれを使うと思います。 – jarmod