在Javardd排序

我用java来激发你的兴趣。 我想对我的地图进行排序。 事实上,我有这样的javaRDD:

JavaPairRDD rebondCountURL = session_rebond_2.mapToPair(new PairFunction<Tuple2, String, String>() { @Override public Tuple2 call(Tuple2 stringStringTuple2) throws Exception { return new Tuple2(stringStringTuple2._2, stringStringTuple2._1); } }).groupByKey().map(new PairFunction<Tuple2<String, Iterable>, Tuple2>() { @Override public Tuple2 call(Tuple2<String, Iterable> stringIterableTuple2) throws Exception { Iterable strings = stringIterableTuple2._2; List b = new ArrayList(); for (String s : strings) { b.add(s); } return new Tuple2(stringIterableTuple2._1, b.size()); } }); 

我想使用Sortby对此Java Rdd进行排序(以便使用Integer进行排序)。

你能帮帮我吗?

先谢谢你。

您需要创建一个从每个元素中提取排序键的函数。 我们的代码示例

 final JavaRDD stage2 = stage1.sortBy( new Function() { private static final long serialVersionUID = 1L; @Override public Long call( Something value ) throws Exception { return value.getTime(); } }, true, 1 ); 

只是与sortBy()相关的提示..如果要对一组用户定义的对象进行排序,请说Point然后在Point类中实现Comparable 接口并覆盖compareTo()方法,您可以在其中编写自己的逻辑用于分类。 在此之后,sortby函数将负责排序逻辑。

注意:您的Point类还必须实现java.io.Serializable接口,否则您将遇到NotSerializableexception。