如何更有效地从spark重命名hdfs中的文件?

时间:2017-08-01 06:37:46

标签: scala apache-spark hdfs

我有450K JSON,我想根据某些规则在hdfs中重命名它们。为了简单起见,我只为每一个添加后缀.finished。 设法使用以下代码执行此操作:

import org.apache.hadoop.fs._

val hdfs = FileSystem.get(sc.hadoopConfiguration)
val files = hdfs.listStatus(new Path(pathToJson))
val originalPath = files.map(_.getPath())

for(i <- originalPath.indices)
{
   hdfs.rename(originalPath(i), originalPath(i).suffix(".finished"))
}

但重命名所有这些都需要12分钟。有没有办法让它更快? (也许并行化) 我使用spark 1.6.0。

1 个答案:

答案 0 :(得分:4)

originalpath.par.foreach(e =&gt; hdfs.rename(e,e.suffix(“finish”)))