Mam świadomość istnienia https://wiki.apache.org/hadoop/AmazonS3 oraz następujących słów:
S3 Native FileSystem (schemat URI: s3n) Natywny system plików do odczytu i zapisu zwykłych plików na S3. Zaletą tego systemu plików jest to, że możesz uzyskać dostęp do plików na S3, które zostały napisane za pomocą innych narzędzi. I odwrotnie, inne narzędzia mogą uzyskiwać dostęp do plików zapisanych przy użyciu Hadoop. Wadą jest ograniczenie rozmiaru pliku do 5 GB narzucone przez S3.
S3A (schemat URI: s3a) Następca S3 Native, s3n fs, system S3a: wykorzystuje biblioteki Amazon do interakcji z S3. Dzięki temu S3a może obsługiwać większe pliki (bez limitu 5 GB), operacje o wyższej wydajności i nie tylko. System plików ma być zamiennikiem / następcą S3 Native: wszystkie obiekty dostępne z adresów URL s3n: // powinny być również dostępne z s3a po prostu poprzez zastąpienie schematu adresu URL.
S3 Block FileSystem (schemat URI: s3) Oparty na blokach system plików wspierany przez S3. Pliki są przechowywane jako bloki, tak jak w HDFS. Pozwala to na wydajną implementację zmian nazw. Ten system plików wymaga dedykowania zasobnika dla systemu plików - nie powinieneś używać istniejącego zasobnika zawierającego pliki ani zapisywać innych plików w tym samym zasobniku. Pliki przechowywane przez ten system plików mogą być większe niż 5 GB, ale nie są kompatybilne z innymi narzędziami S3.
Dlaczego zmiana litery w identyfikatorze URI może mieć takie znaczenie? Na przykład
val data = sc.textFile("s3n://bucket-name/key")
do
val data = sc.textFile("s3a://bucket-name/key")
Jaka jest różnica techniczna leżąca u podstaw tej zmiany? Czy są jakieś dobre artykuły, które mogę przeczytać na ten temat?
s3a
schematu. Możliwe, że odpowiedź powinna zostać zmieniona.