2017-12-03 6 views
-1

は私がスペースで単語を分割線の下に持っていると私はちょうど私の学習に操作するために、私のカスタム関数を渡したい場所の地図機能を持っており、より良いsparkでカスタムマップ関数を書く方法は?

val wordList = dataRdd.flatMap(x=>x.split(" ")).map(x=>(myMap(x))) 

def myMap(word:String) 
{ 
    if(wordMap.contains(word)) 
     { 
     var value:Int = wordMap.get(word).get 
      wordMap+=(word->(value+1)) 
     }else 
     { 
     wordMap+=(word->1) 
     } 
} 

を理解し、私は言葉をチェックしていますマップを持っていますもし存在すれば、1だけインクリメントしてマップを更新します。 myMap関数の戻り値の型はどうでしょうか。結果はwordListにどのように格納されますか?

誰か説明してください。

答えて

0

このようにすることはできません(閉鎖についてはと読んでください)。

そして、あなたが解決しようとする問題点は、単に単語数である:

dataRdd.flatMap(_.split(" ").map((_, 1L))).reduceByKey(_ + _).collectAsMap 
関連する問題