我對Scala和Spark非常陌生,並且對於在輸出文件中顯示結果有一些疑問。以某種格式顯示輸出
其實,我在每個鍵關聯到的目錄列表(Map[Int, List<Double>]
)地圖,如:
(2, List(x1,x2,x3), List(y1,y2,y3), ...).
我應該可以顯示每個鍵的值列出的名單裏,如:
2 x1,x2,x3
2 y1,y2,y3
1 z1,z2,z3
等等。
當我使用saveAsTextFile
函數時,它不會給出我想要的輸出結果。有人知道我能做到嗎?
編輯: 這是我的功能之一:
def PrintCluster(vectorsByKey : Map[Int, List[Double]], vectCentroidPairs : Map[Int, Int]) : Map[Int, List[Double]] = {
var vectorsByCentroid: Map[Int, List[Double]] = Map()
val SortedCentroid = vectCentroidPairs.groupBy(_._2).mapValues(x => x.map(_._1).toList).toSeq.sortBy(_._1).toMap
SortedCentroid.foreach { case (centroid, vect) =>
var nbVectors = vect.length
for (i <- 0 to nbVectors - 1) {
var vectValues = vectorsByKey(vect(i))
println(centroid + " " + vectValues)
vectorsByCentroid += (centroid -> (vectValues))
}
}
return vectorsByCentroid
}
我知道這是錯的,因爲我只能影響一個獨特的鍵一組值。這就是爲什麼它只返回Map中每個鍵的第一個List。我認爲使用saveAsTextFile函數,我必須使用Map結構,但我不知道。
是什麼'saveAsTextFile'給你,它是如何從你想要什麼不同?此外,它看起來並不像你有列表的列表,但普通的列表('Map [Int,List [Double]]')? – Shaido
您可能想要顯示您的Scala代碼。另外,嘗試使用CSV格式編寫數據集,但將分隔符設置爲選項卡 –
@Shaido我擁有的輸出是邏輯,我的意思是...因爲我只能有一個值(地圖格式)的唯一鍵,所以只有第一個值被打印。這是我得到的:(3,List(-2.7,6.1,-2.8)),(2,List(-2.7,7.1,-2.8))。 – Sol