Spark中的分层抽样

时间:2015-08-27 00:18:33

标签: scala apache-spark

我有包含用户和购买数据的数据集。下面是一个示例,其中第一个元素是userId,第二个元素是productId,第三个元素是boolean。

(2147481832,23355149,1)
(2147481832,973010692,1)
(2147481832,2134870842,1)
(2147481832,541023347,1)
(2147481832,1682206630,1)
(2147481832,1138211459,1)
(2147481832,852202566,1)
(2147481832,201375938,1)
(2147481832,486538879,1)
(2147481832,919187908,1)
... 

我想确保我只占用每个用户数据的80%并构建RDD,同时占用20%的剩余部分并构建另一个RDD。让我们来电话和测试。我想远离使用groupBy开始,因为它可以创建内存问题,因为数据集很大。这是最好的方法吗?

我可以关注,但这不会给每个用户80%。

val percentData = data.map(x => ((math.random * 100).toInt, x._1. x._2, x._3)
val train = percentData.filter(x => x._1 < 80).values.repartition(10).cache()

0 个答案:

没有答案