我需要用HDFS中的目录内容更新一个可变列表,我在spark-shell中有以下代码,但是在脚本里面它并没有:
import org.apache.hadoop.fs._
import org.apache.spark.deploy.SparkHadoopUtil
var listOfFiles= scala.collection.mutable.ListBuffer[String]()
val hdfs_conf = SparkHadoopUtil.get.newConfiguration(sc.getConf)
val hdfs = FileSystem.get(hdfs_conf)
val sourcePath = new Path(filePath)
hdfs.globStatus( sourcePath ).foreach{ fileStatus =>
val filePathName = fileStatus.getPath().toString();
val fileName = fileStatus.getPath().getName();
listOfFiles.append(fileName)
}
listOfFiles.tail
任何帮助,在运行时都会启动一个异常,告诉listOfFiles为空。
答案 0 :(得分:2)
你应该避免使用可变集合。
尝试:
val listOfFiles = hdfs.globStatus(sourcePath).map{ fileStatus =>
fileStatus.getPath().getName();
}