2016-11-24 6 views
0

私はScalaとSparkには新しく、SparkでペアのようなRDDを作成し、各行のキーとしてIntを割り当て、+1を合計することを試みました。Sparkで.map関数内の整数を正しく合算する方法は?

val mapUrls = urls.map{ 
var cont = 0 
x => 
cont += 1 
(cont,x) 
} 

問題は、何らかの形で、cont変数が一定の時間の後に1に戻ることです。

私は間違っていますか?

答えて

4

これは何ですか?

urls.zipWithIndex.map(_.swap) 

あなたのコードは正しく動作しません。 Sparkは分散フレームワークであり、共有メモリは存在しません。各タスクには独自のアップデートがありますcont

+0

ありがとうございました。 日々のニーズに対応した機能がたくさんあることがわかりました。 しかし、ちょうど勉強の目的のために、これを解決する別の方法がありますか? – gsjunior86

+0

クロージャの変数を変更することではありません。 'zipWithIndex' sourcをチェックして、これをどのように実装できるかを理解してください。 –

関連する問題