Spark scala中将Array(Row)转化为DataFrame(另一种抽样方式)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值