Я пытаюсь прочитать файл из S3 с помощью автономного кластера Spark 2.2.1 (локально), используя следующие дескрипторы файловой системы: s3, s3a, s3n, но каждый раз я получаю сообщение об ошибке:
No FileSystem for scheme: fs.s3a.impl
Код, который я использую:
String fileSystemPrefix = "s3a";
String awsAccessKeyId = String.format("fs.%s.awsAccessKeyId", fileSystemPrefix);
String awsSecretAccessKey = String.format("fs.%s.awsSecretAccessKey", fileSystemPrefix);
String fileSystemImpl = String.format("fs.%s.impl", fileSystemPrefix);
String fileSystemImplLib = "org.apache.hadoop.fs.s3a.S3AFileSystem";
Configuration hadoopConf = ctx.hadoopConfiguration();
hadoopConf.set(fileSystemImpl, fileSystemImplLib);
hadoopConf.set(awsAccessKeyId, this.s3Key);
hadoopConf.set(awsSecretAccessKey, this.s3Secret);
Затем я строю путь (проверенный) и, используя этот путь, я пытаюсь создать JavaRDD<String>
, работающий:
ctx.textFile(filePath, minPartitions);
Пом. xml имеет:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-aws</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.7.4</version>
</dependency>
Я также установил spark-defaults.conf с:
spark.driver.extraClassPath /mnt/c/Users/user/spark/jars/hadoop-aws-2.7.3.jar
spark.driver.extraClassPath /mnt/c/Users/user/spark/jars/aws-java-sdk-1.7.4.jar
spark.jars.packages com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.3
Может ли кто-нибудь помочь с этим? Буду очень признателен за любые советы. Заранее спасибо.