1)函数签名
def sample(
withReplacement:Boolean,
faction:Double,
seed:Long=Utils.random.nextLong):RDD[T]
//withReplacement:true为有放回的抽样,false为无放回的抽样;
//fraction表示:以指定的随机种子随机抽样出数量为fraction的数据;
//seed表示:指定随机数生成器种子
2)功能说明
从大量的数据中采样
3)需求说明:创建一个RDD(1-10),从中选择放回和不放回抽样
4)具体实现
package com.huc.Spark1.value
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Test08_sample {
def main(args: Array[String]): Unit = {
//1.创建SparkConf并设置App名称
val conf: SparkConf = new SparkConf().setAppName("SparkCore").setMaster("local[*]")
//2.创建SparkContext,该对象是提交Spark App的入口
val sc: SparkContext = new SparkContext(conf)
//3.使用Scala进行spark编程
val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4, 5), 2)
// 取样 不放回
// 第一个参数表示 是否放回
// 第二个参数 表示每一个元素取到的概率 最大是1 表示一定取到
// 第三个参数 表示每次选择的随机情况 种子数一样取得结果就是一样的 默认是当前的时间戳
val value: RDD[Int] = rdd.sample(false, 0.7)
value.collect().foreach(println)
println("+___________________+")
// 取样 放回
// 第二个参数 表格每个元素选取次数的期望值
val value1: RDD[Int] = rdd.sample(true, 2)
value1.collect().foreach(println)
//4.关闭连接
sc.stop()
}
}