当我试图将DataFrame保存为CSV到S3时,将使用Scala生成的名称创建该文件。例如-
file.coalesce(1).write.option("header", "true").csv(bucket + "/fileName.csv")
使用名为fileName.csv
的文件在bucket
中创建一个名为part-00000-955faf13-9fc3-4ccc-b0df-fb91cd701901-c000.csv
的目录
如何更改文件名或使用特定名称保存文件?
发布于 2022-01-12 19:27:30
这就是文件保存后对我起作用的原因-
val src = new Path(s"s3a://$bucketName/$pathToDir")
val fs = src.getFileSystem(sc.hadoopConfiguration)
val status = fs.listStatus(src)
status.foreach(filename => {
fs.rename(new Path(s"s3a://$bucketName/$pathToDir/${filename.getPath.getName}"),
new Path(s"s3a://$bucketName/$pathToDir/$newFileName"))
})
发布于 2022-01-12 16:09:11
Spark的write
方法不能直接控制所写文件的名称。它只能控制目录的名称,而不能控制文件本身。但是,可以在处理后更改文件名:
import org.apache.hadoop.fs._
FileSystem.get(sc.hadoopConfiguration).rename(
new Path("dir/oldName.csv/part-0000"),
new Path("dir/newName.csv"))
https://stackoverflow.com/questions/70664946
复制相似问题