如何为我用Scala保存到S3的CSV文件指定一个名称?

1 人关注

当我试图将一个DataFrame作为CSV保存到S3时,文件被创建的名称是由Scala生成的。例如 -

  file.coalesce(1).write.option("header", "true").csv(bucket + "/fileName.csv")

bucket ,创建一个名为fileName.csv 的目录,其中的文件名为part-00000-955faf13-9fc3-4ccc-b0df-fb91cd701901-c000.csv

我怎样才能改变文件的名称或用一个特定的名称来保存它?

scala
apache-spark
aws-glue
nirkov
nirkov
发布于 2022-01-11
2 个回答
Artem
Artem
发布于 2022-01-13
0 人赞同

Spark的 write 方法不能直接控制被写入的文件的名称。它只能控制目录的名称,但不能控制文件本身。但是,在处理之后,是可以改变文件名的。

import org.apache.hadoop.fs._
FileSystem.get(sc.hadoopConfiguration).rename(
new Path("dir/oldName.csv/part-0000"), 
new Path("dir/newName.csv"))
    
nirkov
nirkov
发布于 2022-01-13
已采纳
0 人赞同

这就是在文件被保存后最终对我起作用的原因------。

val src = new Path(s"s3a://$bucketName/$pathToDir")
val fs = src.getFileSystem(sc.hadoopConfiguration)
val status = fs.listStatus(src)