Загрузка текстового файла приводит к RDD[String]
, поэтому вам придется десериализовать ваши строковые представления кортежей.
Вы можете изменить операцию сохранения, чтобы добавить разделитель между значением кортежа 1 и значением кортежа 2, или проанализировать строку (:v1, :v2)
.
val d = spark.sparkContext.textFile(fileName)
val myMap = d.map(s => {
val parsedVals = s.substring(1, s.length-1).split(",")
(parsedVals(0), parsedVals(1))
}).collect.toMap
Кроме того, вы можете изменить операцию сохранения, чтобы создать разделитель (например, запятую) и проанализировать структуру следующим образом:
itemMap.toSeq.map(kv => kv._1 + "," + kv._2).saveAsTextFile(fileName)
val myMap = spark.sparkContext.textFile("trash3.txt")
.map(_.split(","))
.map(d => (d(0), d(1)))
.collect.toMap