PySpark实战:takeSample操作
来自CloudWiki
介绍
takeSample操作时一个变换算子
它的作用是从RDD中抽样出固定大小的子数据集合,返回新的RDD。
第一个参数是一个布尔值,代表元素是否可以多次抽样;
第二个参数代表期望样本的大小
第三个参数seed代表随机数生成器的种子
代码
import findspark findspark.init() ############################################## from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("local[1]") \ .appName("RDD Demo") \ .getOrCreate(); sc = spark.sparkContext ############################################# rdd =sc.parallelize(range(2,10)) #[5, 9, 5, 3, 2, 2, 7, 7, 5, 7, 9, 9, 5, 3, 2, 4, 5, 5, 6, 8] #True代表一个元素可以出现多次 print(rdd.takeSample(True, 20, 1)) #[5, 8, 3, 7, 9, 2, 6, 4] #False代表一个元素只能出现1次 print(rdd.takeSample(False, 20, 1)) ############################################## sc.stop()
注意:由于takeSample操作会将RDD整个加载到driver端的内存中,因此takeSample操作应该应用在RDD数据不大的情况下。
输出
[5, 9, 5, 3, 2, 2, 7, 7, 5, 7, 9, 9, 5, 3, 2, 4, 5, 5, 6, 8]
[5, 8, 3, 7, 9, 2, 6, 4]