後我有一個數據集,看起來像下面 -火花 - Scala的:返回多個<key, value>處理一行
0 - 1,2,4-
1 - 0,4
2 - 0, 4
4 - 2,1,0
我想讀的每一行,並把它轉換爲的東西,看起來像下面
//爲線0 - 1,2,4
(0,1)< 2,4>
(0,2)< 1,4>
(0,4)< 1,2->
//爲線路1 - 0, 4
(0,1)< 4>
(1,4)< 0>
//較小數目的第一appeears在一對總是
即,讀每一行上分離「 - 「分隔符。所以我從數據集的第1行得到0和1,2,4。之後,我想創建對。例如,(0,1)將是變換映射的關鍵,它的值應該是2,4。
一旦做到這一點,我希望能夠對值進行分組通過鍵
例如(0,1)< 2,4> < 4>
和相交他們得到4.
是否有可能做到這樣的事情?我的方法是對的嗎?
我已經寫了下面的代碼,使遠
var mapOperation = logData.map(x=>x.split("\t")).filter(x => x.length == 2).map(x => (x(0),x(1)))
// reading file and creating the map Example - key 0 value 1,2,4
//from the first map, trying to create pairs
var mapAgainstValue = mapOperation.map{
line =>
val fromFriend = line._1
val toFriendsList = line._2.split(",")
(fromFriend -> toFriendsList)
}
val newMap = mapAgainstValue.map{
line =>
var key ="";
for(userIds <- line._2){
key =line._1.concat(","+userIds);
(key -> line._2.toList)
}
}
的問題是我不能夠調用groupByKey上newMap。我假設我創建地圖的方式存在一些問題?
感謝任何幫助。
謝謝。
請編輯問題並添加一些細節,因爲我無法弄清楚你真的想要什麼 –
我編輯了問題。希望比以前更好。 – maddie