Spark JavaRDD获得十个返回为JavaRDD的第一值

时间:2019-03-19 16:48:57

标签: java apache-spark rdd

我有一个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的前十名?

1 个答案:

答案 0 :(得分:0)

我没有手提电脑可以检查,所以我会提出一些想法。抱歉。

因为10是一个很小的数字,所以我会先收集然后并行化..:-)

假设这是一个比10更通用的问题,但足够小以适合单个分区,则可以:  -用1重新分区(考虑添加合并)  -排序  -zipWithindex  -过滤器(键小于“ 10”)

IMHO zipWithindex不会执行多分区(无法检查)的工作,因为它首先根据分区索引分配索引,然后根据分区内部的顺序分配索引。