Spark快速大数据分析——第六章Spark编程进阶——数值RDD的操作

object RDD_2 extends App {
     
  val conf = new SparkConf().setMaster("local").setAppName("PairRDD")
  val sc = new SparkContext(conf)
  val lines = sc.parallelize(List(1,3,5,7,8,9))
  // RDD中的元素个数
  private val count: Long = lines.count()
  println(count)
  // 元素的平均值
  private val mean: Double = lines.mean()
  println("元素的平均值" + mean)
  // 总和
  private val sum: Double = lines.sum()
  println("总和" + sum)
  //最大值
  private val max: Int = lines.max()
  println("最大值" + max)
  // 最小值
  private val min: Int = lines.min()
  println("最小值" + min)
  // 元素的方差
  private val variance: Double = lines.variance()
  println("元素的方差" + variance)
  // 标准差
  private val stdev: Double = lines.stdev()
  println("标准差" + stdev)
}
元素个数6
元素的平均值5.5
总和33.0
最大值9
最小值1
元素的方差7.916666666666667
标准差2.8136571693556887

例子:
找出一个数字的方差(样本方差)与 总体方差 差距过大的情况(即大于方差)
1,3,5,7,8,9
很明显 1和9与平均数5.5的绝对值的平方(样本方差)与标准差 差距过大
刷选出 样本差 大于 标准方差的 情况,1和9 会被筛选出去

object RDD_3 extends App {
     
  val conf = new SparkConf().setMaster("local").setAppName("PairRDD")
  val sc = new SparkContext(conf)

  val lines = sc.parallelize(List(1,3,5,7,8,9))
  private val distanceInt = lines.map(string => string.toInt)
  val stats = distanceInt.stats()
  // 求标准差
  val stddev = stats.stdev
  println("标准差" + stddev)
  // 求平均数
  val mean = stats.mean
  println("平均数" + mean)
  // 找出标准差小于平均数的值
  val reasonableDistances = distanceInt.filter( x => math.abs(x-mean) < stddev)
  println(reasonableDistances.collect().toList)
  //  标准差2.8136571693556887
  //  平均数5.5
  // List(3, 5, 7, 8)

}

你可能感兴趣的:(Spark)