Невозможно прочитать из корзины S3 с протоколом s3, только s3a - PullRequest
1 голос
/ 15 октября 2019

Я прошел через все потоки на зависимостях для подключения искры, работающей на EMR AWS, к корзине s3, однако моя проблема, кажется, немного отличается. Во всех других обсуждениях, которые я видел, протоколы s3 и s3a имеют одинаковые зависимости. Не уверен, почему один работает на меня, а другой нет. В настоящее время, когда работает спарк в локальном режиме, s3a прекрасно справляется со своей задачей, но, насколько я понимаю, s3 - это то, что поддерживает работу в EMR (из-за зависимости от блочного хранилища HDFS). Чего мне не хватает для работы протокола s3?

spark.read.format("csv").load("s3a://mybucket/testfile.csv").show()
//this works, displays the df

против

spark.read.format("csv").load("s3://mybucket/testfile.csv").show()
/*
java.io.IOException: No FileSystem for scheme: s3
  at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2660)
  at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)
  at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
  at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)
  at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
  at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
  at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
  at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary$1.apply(DataSource.scala:547)
  at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary$1.apply(DataSource.scala:545)
  at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
  at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
  at scala.collection.immutable.List.foreach(List.scala:392)
  at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
  at scala.collection.immutable.List.flatMap(List.scala:355)
  at org.apache.spark.sql.execution.datasources.DataSource.org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary(DataSource.scala:545)
  at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:359)
  at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:178)
  ... 51 elided
*/

1 Ответ

1 голос
/ 15 октября 2019

Apache Hadoop предоставляет следующие клиенты файловой системы для чтения и записи в Amazon S3:

  1. S3 (схема URI: s3) - реализация Apache Hadoop для файловой системы на основе блоков, поддерживаемойS3.

  2. S3A (схема URI: s3a) - S3A использует библиотеки Amazon для взаимодействия с S3. S3A поддерживает доступ к файлам размером более 5 ГБ и до 5 ТБ, а также обеспечивает повышение производительности и другие улучшения.

  3. S3N (схема URI: s3n) - собственная файловая система для регулярного чтения и записифайлы на S3. s3n поддерживает объекты размером до 5 ГБ

Ссылка:

Технически, в чем разница между s3n, s3a и s3?

https://web.archive.org/web/20170718025436/https://aws.amazon.com/premiumsupport/knowledge-center/emr-file-system-s3/

...