Как повернуть карту и пройтись по ключам и значениям в Scala Spark - PullRequest
1 голос
/ 21 июня 2019

Я пишу скрипт Scala Spark, в котором я храню (разделы Hive) пути HDFS в качестве ключей, а их базовый файл - в качестве значений.Я хочу написать цикл for, чтобы проверить, существует ли путь к файлу (с использованием ключа), а число больше 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
}

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Есть несколько вариантов.

  1. Используйте TreeMap для построения структуры данных.Он сортируется по ключам.
  2. Преобразует его в последовательность или список и сортирует его.

Все эти параметры описаны здесь с примером.

см. ссылка на карту сортировки

0 голосов
/ 21 июня 2019

«Голосование вверх», если вам подходит ответ.

Вам нужно использовать ListMap, а затем сортировать карту по ключу (в основном вы можете повернуть карту и выполнить дальнейшие операции).

import scala.collection.immutable.ListMap

val paths_sortBy_key_asc = ListMap (paths.toSeq.sortBy (_._ 1) <_. <em>1: *)

or 

val paths_sortBy_key_dsc = ListMap (paths.toSeq.sortBy (_._ 1)> _. 1: *)

Надеюсь, это поможет !!

...