2017-02-14 9 views
-2

это часть моего кода:Запись файла в Amazon S3 AWS Storage с помощью Scala

val file=new File("s3a://tracce/output/Tempi.txt") 
    val writer=new BufferedWriter(new FileWriter(file,true)) 
    writer.write("Execution Time trace "+count.toString+"x"+i.toString+": "+differenza.toString) 
    writer.newLine() 
    writer.flush() 
    writer.close() 

Мне нужно написать новый файл в моем ведре с помощью Scala. я получаю эту ошибку:

Exception in thread "main" java.io.FileNotFoundException:  s3:/tracce/output/Tempi.txt (No such file or directory) 

Когда я пытаюсь сохранить его на месте, он работает:

val file=new File("./Tempi.txt") 

Как я мог решить эту проблему? Заранее спасибо

+2

Существует AWS Java SDK, который делает делает это довольно легко – Tyler

+0

я думаю, что это что вы ищете https://www.cloudera.com/documentation/enterprise/5-5-x/topics/spark_s3.html – GameOfThrows

+0

он работает с RDD, мне нужно написать простую строку –

ответ

0

S3 - хранилище объектов, вы не можете писать строки. Вероятно, вы можете записать строки в локальный файл и периодически загружать файл на S3.

0

S3A, являющийся клиентом файловой системы Hadoop, вы не можете использовать API-интерфейс Java для работы с ним.

  1. Создайте hadoop Configuration объект со всеми вашими учетными данными s3 в них. Вы получаете это бесплатно от SparkContext.
  2. Используйте API Hadoop FS, чтобы получить экземпляр FS, создать(), чтобы создать файл в нем

    val fs = FileSystem.get(new URI("s3a://trace/output/Tempi.txt"), conf) 
    val out = fs.create("/output/Tempi.txt", true) 
    out.write(/* your string as bytes */) 
    out.close() 
    
Смежные вопросы