2016-05-08 6 views
2

各行に数字を表すファイルがあるとします。 Scala - Sparkでファイル内のすべての数値の平均を求めるにはどうすればいいですか?スパーク・スカラーのテキスト・ファイル内の数値の平均を計算する

val data = sc.textFile("../../numbers.txt") 
val sum = data.reduce((x,y) => x+y) 
val avg = sum/data.count() 

ここで、xとyは文字列です。 reduce関数内でLongをどのように変換するのですか?

答えて

5

は、あなたはそれらを削減する前に文字列を解析しRDD.mapを適用する必要があります。

val sum = data.map(_.toInt).reduce(_+_) 
val avg = sum/data.count() 

しかし、私は、あなたがそれを自分で計算するのではなく、DoubleRDDFunctions.meanを使用したほうが良いだと思う:作品

val mean = data.map(_.toInt).mean() 
+1

を。ありがとう – G3M

+1

@ G3M追加の便利な方法のために私の編集を参照してください:) –