takeSample 可以对 RDD 中的数据随机获取 num 个,第一个参数是有 无放回,第二个参数是随机获取几个元素,第三个参数如果固定,那么每次获取的数据固定。抽取到的数据放入Driver端集合
- scala
package action
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
 * @Author yqq
 * @Date 2021/12/10 12:09
 * @Version 1.0
 */
object TaskSampleTest1 {
  def main(args: Array[String]): Unit = {
    val context = new SparkContext(
      new SparkConf()
        .setMaster("local")
        .setAppName("TaskSampleTest1")
    )
    context.setLogLevel("Error")
    val value: RDD[String] = context.parallelize(Array[String]("a", "b", "c", "d", "e", "f", "g"))
    val strings: Array[String] = value.takeSample(false, 3, 100L)
    strings.foreach(println)
  }
}
 2. java
package action;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import java.util.Arrays;
/**
 * @Author yqq
 * @Date 2021/12/10 11:59
 * @Version 1.0
 */
public class TaskSampleTest {
    public static void main(String[] args) {
        JavaSparkContext context = new JavaSparkContext(
                new SparkConf()
                        .setMaster("local")
                        .setAppName("TaskSampleTest")
        );
        context.setLogLevel("Error");
        JavaRDD<String> rdd = context.parallelize(Arrays.asList("a", "b", "c", "d", "e", "f", "g"));
        rdd.takeSample(false,3,100L).forEach(e-> System.out.print(e+"\t"));
    }
}
                
                










