0
我想讓這個變量GroupsByP
具有某種類型:GroupsByP
是由db連接select/collect語句定義的,它有3個字段:2個字符串(p
和id
)和一個int(order
)。spark group by not getting type,mismatch error
預期的結果應該是這樣的形式Map[p,Set[(Id,Order)]]
val GroupsByP = db.pLinkGroups.collect()
.groupBy(_.p)
.map(group => group._1 -> (group._2.map(_.Id -> group._2.map(_.Order)).toSet))
我期望這個變量的類型是
Map[String, Set[(String, Int)]]
,但實際是Map[String, Set[(String, Array[Int])]],
我認爲做的。 QQ你怎麼沒有使用下劃線,而是你使用記錄? – dedpo
使用下劃線作爲這樣的匿名函數的輸入參數,意味着你只能使用那個未命名的參數_once_ - 如果你嘗試使用它兩次(例如'(_.Id,_.Order)'),你實際上正在創建一個匿名函數需要**兩個**參數(第一個下劃線引用第一個下劃線,第二個下劃線引用第二個下劃線)。這顯然不是我們在這裏需要的。換句話說,_naming_參數(在這裏,我將它命名爲「record」 - 可以使用任何有意義的名稱)通常是* must *。 Underscode是一種應該謹慎使用的短手。 –