1.spark DataFrame常规的采样方式——sample()
由于scala中 对DataFrame 方式为 sample() 方法
sample : 采样
采样变换根据给定的随机种子,从RDD中随机地按指定比例选一部分记录,创建新的RDD。采样变换 在机器学习中可用于进行交叉验证。
语法
def sample(withReplacement: Boolean, fraction: Double, seed: Long = Utils.random.nextLong): RDD[T]参数
withReplacement : Boolean , True表示进行替换采样,False表示进行非替换采样
fraction : Double, 在0~1之间的一个浮点值,表示要采样的记录在全体记录中的比例
seed :随机种子
var sample_frac = (extract_nums/result_data.count().toFloat).formatted("%.2f").toFloat
result_data_sample = result_data.sample(false, sample_frac)
这样就有问题 :
1.当sample_frac采样率✖️数据总条数 出现小数时 采样数据总条数未必等于例子中的extract_nums(采样条数)
2.当采样率过小 或者 采样率*数据总条数<1 时 采样数据为空
所以今天介绍一种全新的采样方式,可以采样出等于extract_nums(采样条数) 的数据
利用take(n)构造Row进而构造DataFrame(相对比较复杂)
take:无序采样
使用take

1129

被折叠的 条评论
为什么被折叠?



