我在 s3 文件夹中有 Spark 输出,我想将所有 s3 文件从该输出文件夹移动到另一个位置,但在移动时我想重命名这些文件。
例如,我在 S3 文件夹中有文件,如下所示
现在我想重命名所有文件并放入另一个目录中,但文件的名称如下所示
Fundamental.FinancialStatement.FinancialStatementLineItems.Japan.1971-BAL.1.2017-10-18-0439.Full.txt
Fundamental.FinancialStatement.FinancialStatementLineItems.Japan.1971-BAL.2.2017-10-18-0439.Full.txt
Fundamental.FinancialStatement.FinancialStatementLineItems.Japan.1971-BAL.3.2017-10-18-0439.Full.txt
这里Fundamental.FinancialStatement在所有文件中都是恒定的2017-10-18-0439
当前日期时间。
这是我到目前为止所尝试过的,但无法获取文件夹名称并循环遍历所有文件
import org.apache.hadoop.fs._
val src = new Path("s3://trfsmallfffile/Segments/output")
val dest = new Path("s3://trfsmallfffile/Segments/Finaloutput")
val conf = sc.hadoopConfiguration // assuming sc = spark context
val fs = src.getFileSystem(conf)
//val file = fs.globStatus(new Path("src/DataPartition=Japan/part*.gz"))(0).getPath.getName
//println(file)
val status = fs.listStatus(src)
status.foreach(filename => {
val a = filename.getPath.getName.toString()
println("file name"+a)
//println(filename)
})
这给了我以下输出
file nameDataPartition=Japan
file nameDataPartition=SelfSourcedPrivate
file nameDataPartition=SelfSourcedPublic
file name_SUCCESS
这为我提供了文件夹详细信息,而不是文件夹内的文件。
参考资料取自这里堆栈溢出参考 https://stackoverflow.com/questions/48200035/how-rename-s3-files-not-hdfs-in-spark-scala/48223470?noredirect=1#comment83543229_48223470