gpt4 book ai didi

scala - 如何删除以 Apache Spark 中的某个单词开头的多个 hdfs 目录

转载 作者:可可西里 更新时间:2023-11-01 16:23:10 31 4
gpt4 key购买 nike

我使用 dstream.saveAsObjectFiles("/temObj") 方法在 spark streaming 中保存了对象文件,它在 hdfs 中显示了多个文件。

temObj-1506338844000
temObj-1506338848000
temObj-1506338852000
temObj-1506338856000
temObj-1506338860000

我想在全部读取后删除所有 temObj 文件。在 spark.js 中做这件事的最佳方式是什么?我试过了

val hdfs = org.apache.hadoop.fs.FileSystem.get(new java.net.URI("hdfs://localhost:9000"), hadoopConf)
hdfs.delete(new org.apache.hadoop.fs.Path(Path), true)

但是一次只能删除一个文件夹

最佳答案

不幸的是,delete 不支持 glob。

您可以使用 globStatus并逐个遍历文件/目录并删除它们。

val hdfs = FileSystem.get(sc.hadoopConfiguration)

val deletePaths = hdfs.globStatus(new Path("/tempObj-*") ).map(_.getPath)

deletePaths.foreach{ path => hdfs.delete(path, true) }

或者,您可以使用 sys.process 来执行 shell 命令

import scala.sys.process._

"hdfs dfs -rm -r /tempObj*" !

关于scala - 如何删除以 Apache Spark 中的某个单词开头的多个 hdfs 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46419183/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com