计算spark scala中文本文件中数字的平均值

G3M*_*G3M 2 scala apache-spark

假设我有一个文件,每行代表一个数字.如何在Scala - Spark中找到文件中所有数字的平均值.

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

这里的问题是x和y是字符串.如何在reduce函数中将它们转换为Long.

Yuv*_*kov 7

你需要应用一个RDD.map在减少它们之前解析字符串的方法:

val sum = data.map(_.toInt).reduce(_+_)
val avg = sum / data.count()
Run Code Online (Sandbox Code Playgroud)

但我认为你最好DoubleRDDFunctions.mean不要自己使用而不是自己计算:

val mean = data.map(_.toInt).mean()
Run Code Online (Sandbox Code Playgroud)