PySpark实战:sample操作

来自CloudWiki
跳转至: 导航搜索

介绍

sample操作是一个变换算子,可以实现按数据进行抽样的功能。

调用形式为rdd.sample(withReplacement,fraction,seed=None)

withReplacement:布尔值,表示在采样过程中是否可以对同一个元素进行多次采样

fraction:抽样的比例

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(10), 1)
ret = rdd.sample(False,0.7, 1)
#可能输出[9, 11, 13, 39, 49, 55, 61, 65, 90, 91, 93, 94]
print(ret.collect())
ret = rdd.sample(True,0.7, 1)
#可能输出[16, 19, 23, 30, 41, 50, 70, 73, 75, 80, 84, 96, 99]
print(ret.collect())
##############################################
sc.stop()

输出

[0, 2, 3, 5, 6, 8, 9]

[1, 2, 3, 4, 8, 9, 9, 9]