我有一个JavaRDD
JavaRDD<Tweet> ordered = ... ;
顾名思义,它已经订购。我想获取前十个值(按降序排列):
JavaRDD<Tweet> top10Followers = ordered.take(10);
但这给了我以下错误:
incompatible types: java.util.List<Tweet> cannot be converted to org.apache.spark.api.java.JavaRDD<Tweet>
take返回一个列表。有没有办法成为JavaRDD的前十名?
答案 0 :(得分:0)
我没有手提电脑可以检查,所以我会提出一些想法。抱歉。
因为10是一个很小的数字,所以我会先收集然后并行化..:-)
假设这是一个比10更通用的问题,但足够小以适合单个分区,则可以: -用1重新分区(考虑添加合并) -排序 -zipWithindex -过滤器(键小于“ 10”)
IMHO zipWithindex不会执行多分区(无法检查)的工作,因为它首先根据分区索引分配索引,然后根据分区内部的顺序分配索引。