转换算子Sample介绍及底层相关算法代码

Posted Mr.zhou_Zxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转换算子Sample介绍及底层相关算法代码相关的知识,希望对你有一定的参考价值。

转换算子Sample介绍及底层相关算法代码

  • Spark-Core
object num5{
    def main(args: Array[String]): Unit = {
        val sc = new SparkContext(new SparkConf().setMaster("local[*]").setAppName("num5"))
        val RDD: RDD[Int] = sc.makeRDD(List(1,2,3,4,5,6,7,8,9,10))
        /**
         * 抽取算法不放回(伯努利算法)
         * 伯努利算法:又叫0,1分布,例如仍硬币,要么正面,要么反面
         * 具体实现:根据种子和随机算法算出一个数和第二个参数设置几率比较,
         *     小于第二个参数,大于不要
         * 第一个参数:抽取的数据是否放回,false:不放回
         * 第二个参数:抽取的纪律,范围在[0,1]之间,0:全不取;1,全取
         * 第三个参数:随机数种子
         */
        val dateRDD1: RDD[Int] = RDD.sample(false,0.5)
        dateRDD1.foreach(println)
        /**
         * 抽取数据放回(泊松算法)
         * 第一个参数:抽取的数据是否放回,true:放回
         * 第二个参数:重复数据的几率,范围大于等于0,表示没有一个元素被期望抽取到的次数
         * 第三个参数:随机数种子
         */
        val dateRDD2: RDD[Int] = RDD.sample(true,2)
        dateRDD2.foreach(println)
        
        
    }
}
  • Sample底层代码
if (withReplacement) {
          //第一个参数为true,泊松算法
new PartitionwiseSampledRDD[T, T](this, new PoissonSampler[T](fraction), true, seed)
} else {
          //第一个参数为false,伯努利算法
new PartitionwiseSampledRDD[T, T](this, new BernoulliSampler[T](fraction), true, seed)
}

在这里插入图片描述

以上是关于转换算子Sample介绍及底层相关算法代码的主要内容,如果未能解决你的问题,请参考以下文章

Sober算子边缘检测与Harris角点检测1

采样方法MCMC相关算法介绍及代码实现

openGauss数据库源码解析系列文章—— 执行器解析

快看Sample代码,速学Swift语言-基础介绍 快看Sample代码,速学Swift语言-语法速览

Spark-RDD 转换算子(Value 类型)

Redis中五大数据结构的底层实现