Запись файла с использованием FileSystem на S3 (Scala) - PullRequest
0 голосов
/ 27 июня 2019

Я использую scala и пытаюсь записать файл со строковым содержимым в S3.Я пытался сделать это с FileSystem, но я получаю сообщение об ошибке: "Wrong FS: s3a"

    val content = "blabla"
    val fs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
    val s3Path: Path = new Path("s3a://bucket/ha/fileTest.txt")
    val localPath= new Path("/tmp/fileTest.txt")
    val os = fs.create(localPath)
    os.write(content.getBytes)
    fs.copyFromLocalFile(localPath,s3Path)

, и я получаю сообщение об ошибке:

java.lang.IllegalArgumentException: Wrong FS: s3a://...txt, expected: file:///

Чтоне так?

Спасибо !!

1 Ответ

2 голосов
/ 27 июня 2019

вам нужно запросить конкретную файловую систему для этой схемы, затем вы можете создать текстовый файл непосредственно в удаленной системе.

val s3Path: Path = new Path("s3a://bucket/ha/fileTest.txt")
val fs = s3Path.getFilesystem(spark.sparkContext.hadoopConfiguration)
val os = fs.create(s3Path, true)
os.write("hi".getBytes)
os.close

Нет необходимости писать локально и загружать;разъем s3a будет буферизироваться и загружаться по мере необходимости

...