私はスカラーにとって非常に珍しく、キーが候補であり、値が投票数であるハッシュマップを作成したいと考えています。このようなもの:{(1:20)、(2:4)、(3:42)、..}。スカラーのMapにキーと値のペアを追加する
I`veは、次のコードを用いて試み:
val voteTypeList = textFile.map(x=>x(2)) //String array containing votes: [3,4,2,3,2,1,1,1,9,..]
var voteCount:Map[String,Int] = Map()
voteTypeList.foreach{x=>{
if (voteCount.contains(x)){ //Increment value
var i: Integer = voteCount(x)
voteCount.updated(x, i+1)
// print(voteCount(x))
}
else{ //Create new key-value pair
// println(x)
voteCount += (x -> 1)
}}}
print(voteCount.size)
しかしvoteCountが作成され、0
はありがとうリターンを.sizeません!
は、私は今、ビッグデータを扱う際のforeachが悪いことを実現します、ありがとうございます。いくつかのグーグル・グーグルの後、私はこれらの単純な行に来ました。 :) valletTypeList = textFile.map(x =>(x(2)、1)) valletCount = voteTypeList reduceByKey((a、b)=> a + b) – torjussa
実行可能なソリューションを思いついたことをうれしく思いますしかし、 'foreach'は**大きなデータを扱うときに悪い**ではありません。それは戻り値を持たない(実際には 'Unit'を返す)ために使用されることはめったにありませんが、代わりに副作用を介して動作します。 – jwvh