我有一个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>
拿回一个清单。有没有办法让前十名成为JavaRDD?
我没有我的笔记本电脑检查所以我会抛出想法。抱歉。
由于10是一个小数字,我会去收集然后并行化.. :-)
假设这是一个比10更通用的问题,但小到足以适合单个分区,那么可能: - 重新分配1(考虑添加合并) - sort - zipWithindex - filter(key小于“10”)
IMHO zipWithindex不会为多分区(无法检查)完成工作,因为它首先根据分区索引分配索引,然后分区内的排序。