Scala 在PAIRDD/a映射数据结构上运行sum,直到达到阈值
我有一个数据集,我从中创建了一个Scala 在PAIRDD/a映射数据结构上运行sum,直到达到阈值,scala,apache-spark,hashmap,rdd,Scala,Apache Spark,Hashmap,Rdd,我有一个数据集,我从中创建了一个pairdd[K,V] v=每个键下的数据点数)] (dr5n,108) (dr5r4,67) (DR5R51163) (DR5R6121) (DR5R71103) (dr5rb,93) (dr5re8,11) (DR5RE9190) (dr5reb,26) (dr5rec,38088) (dr5red,36713) (dr5ree,47316) (dr5ref,131353) (dr5reg,121227) (dr5reh,264) (dr5rej,163) (
pairdd[K,V]
v=每个键下的数据点数)] (dr5n,108)
(dr5r4,67)
(DR5R51163)
(DR5R6121)
(DR5R71103)
(dr5rb,93)
(dr5re8,11)
(DR5RE9190)
(dr5reb,26)
(dr5rec,38088)
(dr5red,36713)
(dr5ree,47316)
(dr5ref,131353)
(dr5reg,121227)
(dr5reh,264)
(dr5rej,163)
(dr5rek,163)
(dr5rem,229) 我需要将每个键分配给一个RDD分区,在这个阶段之后,我
zipWithIndex
这个RDD的键
val partitioner = loadTree.coalesce(1).sortByKey().keys.zipWithIndex
(dr5n,0)(dr5r4,1)
(dr5r5,2)
(dr5r6,3)
(dr5r7,4)
(dr5rb,5)
(dr5re8,6)
(dr5re9,7)
(dr5reb,8)
(dr5rec,9)
(dr5red,10)
(dr5ree,11)
(dr5ref,12)
(dr5reg,13)
(dr5reh,14)
(dr5rej,15)
(dr5rek,16)
(dr5rem,17) 但为了在每个分区中获得更好的负载分布,我需要从键1开始(按排序顺序)遍历值,并计算值的运行和,直到阈值值,并将所有键设置为相同的值(在本例中,分区号从0开始) 比如说,阈值=10000,那么 (dr5n,0)
(dr5r4,0)
(dr5r5,0)
(dr5r6,0)
(dr5r7,0)
(dr5rb,0)
(dr5re8,0)
(dr5re9,0)
(dr5reb,0) (dr5rec,1) (dr5red,2) (dr5ree,3) (dr5ref,4) (dr5reg,5) (dr5reh,6)
(dr5rej,6)
(dr5rek,6)
(dr5rem,6) 我尝试创建一个新的地图,创建一组可以分组并插入到新地图中的关键点
有没有什么专家方法可以达到同样的效果?谢谢 只做
RDD.repartition(newPartitionCount)
不是更简单吗?
val partitioner = loadTree.coalesce(1).sortByKey().keys.zipWithIndex