我有一个键值RDD,其中键可以是1
和5
之间的任何值。 RDD中的记录数量以百万计。我需要输出每个密钥有10,000条记录的RDD。
示例RDD [(String,String)]用于3个不同的键:
1 a
2 b
3 b
2 c
1 d
2 e
2 f
2 c
1 d
3 e
2 f
如果我需要每个键的两个任意2条记录,输出可能是:
1 a
1 f
2 c
2 d
3 c
3 d
答案 0 :(得分:2)
sampleByKeyExact
应该这样做:
def sampleByKeyUniform[T: ClassTag, U: ClassTag](
rdd: RDD[(T, U)], n: Long, withReplacement: Boolean = false) = {
rdd.sampleByKeyExact(withReplacement,
rdd.countByKey.map{case (k, v) => k -> n.toDouble / v})
}
答案 1 :(得分:0)
您需要在reduceByKey
上使用RDD
来计算每次显示的次数,然后使用filter
来获取count > 10000