我正在编写一个Scala Spark脚本,其中将(Hive分区)HDFS路径存储为键,并将其基础文件计数为值。我想编写一个for循环来检查文件路径是否存在(使用键)并且count大于0。我必须反转整个映射,因为我想开始检查最新的分区。
我找不到任何方法来反转地图并遍历地图。 这是我的代码:
val paths = collection.mutable.Map[String, Float]()
status.foreach( x => paths += (x.getPath.toString -> fs.getContentSummary(new Path(x.getPath.toString).getFileCount() )
这是我打算做的事情:
//Reverse the map to make last element as first element
var result = ""
for ((k,v) <- paths) {
if(!fs.exists(new Path(k)) && v < 1)
continue
else
result = k
break
}
答案 0 :(得分:0)
如果答案适合您,请“投票”。
您需要使用ListMap,然后根据键对地图进行排序(基本上,您可以反转地图并执行进一步的操作)。
导入scala.collection.immutable.ListMap
val path_sortBy_key_asc = ListMap(paths.toSeq.sortBy(_._ 1)<_。 1: *)
or
val path_sortBy_key_dsc = ListMap(paths.toSeq.sortBy(_._ 1)> _。 1: *)
希望这会有所帮助!
答案 1 :(得分:0)