Spark(Scala)中如何筛选出重复指定次数的元素?
Spark(Scala)筛选重复指定次数的元素
要找出RDD中重复指定次数的元素,核心逻辑是先统计元素出现次数,再筛选出次数匹配目标值的元素,以下是具体实现步骤:
1. 创建示例RDD
先初始化你提供的测试RDD:
val rdd = sc.parallelize(Seq("text1", "text2", "text3", "text4", "text2", "text4", "text1", "text1"))
2. 统计元素出现次数
通过map标记计数、reduceByKey聚合统计每个元素的出现次数:
val elementCountRdd = rdd.map(element => (element, 1)).reduceByKey(_ + _)
3. 筛选目标次数的元素
指定目标重复次数targetTime,过滤出计数等于该值的元素并提取结果:
val targetTime = 2 val resultRdd = elementCountRdd.filter(_._2 == targetTime).map(_._1)
4. 查看结果
执行collect获取结果并打印:
resultRdd.collect().foreach(println)
输出结果为:
text2 text4
关键步骤说明
map((element, 1)):给每个元素绑定初始计数1reduceByKey(_ + _):按元素(key)分组,累加所有对应计数得到总出现次数filter(_._2 == targetTime):保留计数等于目标次数的键值对map(_._1):从键值对中提取出对应的元素本身
内容的提问来源于stack exchange,提问作者person
相关产品推荐
相关产品推荐

