语法
val newRdd = oldRdd.sample(withReplacement, fraction, seed)
withReplacement表示是抽出的数据是否放回,true为有放回的抽样,false为无放回的抽样
fraction表示随机抽样的数据数量
seed用于指定随机数生成器种子
源码
def sample(withReplacement : scala.Boolean, fraction : scala.Double, seed : scala.Long = { /* compiled code */ }) : org.apache.spark.rdd.RDD[T] = { /* compiled code */ }
作用
以指定的随机种子随机抽样出数量为fraction的数据,withReplacement表示是抽出的数据是否放回,true为有放回的抽样,false为无放回的抽样,seed用于指定随机数生成器种子。
例子
package com.day1
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object oper {
def main(args: Array[String]): Unit = {
val config:SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount")
// 创建上下文对象
val sc = new SparkContext(config)
// sample算子
val listRdd: RDD[Int] = sc.makeRDD(1 to 10)
val sampleRdd = listRdd.sample(false,0.5 ,1)
sampleRdd.collect().foreach(println)
}
}
输入
1 2 3 4 5 6 7 8 9 10
输出
3 5 9