spark sample"/>
spark sample
目录
- spark sample 功能
- 案例演示
spark sample 功能
随机抽样
该函数有3个参数
-
-withReplacement 是否抽样放回true 抽样放回false 不放回
-
-fractionwithReplacement=true情况下 表示期望每一个元素出现的次数withReplacement=false情况下 表示RDD中每一个元素出现的概率[0,1]
-
-seed 抽样算法初始值(即随机数种子)一般不需要指定
案例演示
需求:有一个RDD,里边存放了1 2 3,三个数字,现从这个三个数字中进行随机抽取
第一种抽取方式:抽样后放回,并且期望每个数字被抽取到的几率为2次
第二种抽取方式:抽样后不放回,期望每一个数字被抽取到的几率为0.6
package com.xcu.bigdata.spark.core.pg02_rdd.pg022_rdd_transformimport org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}/*** @Package : com.xcu.bigdata.spark.core.pg02_rdd.pg022_rdd_transform* @Desc : * -withReplacement 是否抽样放回* true 抽样放回* false 不放回* -fraction* withReplacement=true情况下 表示期望每一个元素出现的次数* withReplacement=false情况下 表示RDD中每一个元素出现的概率[0,1]* -seed 抽样算法初始值(即随机数种子)一般不需要指定*/
object Spark07_Rsample {def main(args: Array[String]): Unit = {//创建配置文件val conf: SparkConf = new SparkConf().setAppName("Spark07_Rsample").setMaster("local[*]")//创建SparkContext,该对象是提交的入口val sc = new SparkContext(conf)//创建RDD,RDD中有1 2 3val rdd: RDD[Int] = sc.makeRDD(1 to 3)/*从上述RDD中抽取数据,抽样后放回fraction = 2表示期望每一个数字被抽取到的几率为2次,但实际上每一个数字不可能百分之百被抽取到2次抽样结束时,可能会有n个数字,例如第一次抽取 5个数字,第二次 1个数字,第三次 7个数字*/val resRDD1: RDD[Int] = rdd.sample(withReplacement = true, fraction = 2)//打印输出resRDD1.foreach(println)println("************************************")/*抽样后不放回,期望每一个数字出现的几率为0.6抽样结束时,可能会有n个数字,例如第一次抽取 5个数字,第二次 1个数字,第三次 7个数字*/val resRDD2: RDD[Int] = rdd.sample(withReplacement = false, fraction = 0.6)//打印输出resRDD2.collect().foreach(println)//释放资源sc.stop()}
}
更多推荐
spark sample
发布评论