public class SecondSort_java { public static void main(String[] args){ SparkConf conf = new SparkConf(). setMaster("local"). setAppName("SecondSort_java"); JavaSparkContext jsc = new JavaSparkContext(conf); JavaRDD<String> textFileRDD = jsc.textFile("E:\\2.txt"); JavaPairRDD<SecondSortEntity, String> pairRDD = textFileRDD.mapToPair(new PairFunction<String, SecondSortEntity, String>() { public Tuple2<SecondSortEntity, String> call(String s) throws Exception { String[] splits = s.split("\\s"); SecondSortEntity sse = new SecondSortEntity (Integer.parseInt(splits[0]), Integer.parseInt(splits[1]),Integer.parseInt(splits[2])); return new Tuple2<SecondSortEntity, String>(sse, s); } }); JavaPairRDD<SecondSortEntity, String> sortRDD = pairRDD.sortByKey(true); JavaRDD<String> map = sortRDD.map(new Function<Tuple2<SecondSortEntity, String>, String>() { public String call(Tuple2<SecondSortEntity, String> v1) throws Exception { return v1._2; } }); map.foreach(new VoidFunction<String>() { public void call(String s) throws Exception { System.out.println(s); } }); jsc.stop(); } }
//实体类
public class SecondSortEntity implements Ordered<SecondSortEntity>, Serializable{ private int firstNum; private int secondNum; private int thirdNum; public int getSecondNum() { return secondNum; } public void setSecondNum(int secondNum) { this.secondNum = secondNum; } public int getFirstNum() { return firstNum; } public int getThirdNum() { return thirdNum; } public void setThirdNum(int thirdNum) { this.thirdNum = thirdNum; } public void setFirstNum(int firstNum) { this.firstNum = firstNum; } public SecondSortEntity() { } public SecondSortEntity(int firstNum ,int secondNum,int thirdNum) { this.secondNum = secondNum; this.firstNum = firstNum; this.thirdNum = thirdNum; } //如何比较 public int compare(SecondSortEntity that) { int result = this.firstNum-that.firstNum; if(result == 0){ result = that.secondNum - this.secondNum; if(result == 0){ result = that.thirdNum - this.thirdNum; } } return result; } //如何比较 同上 public int compareTo(SecondSortEntity that) { int result = this.firstNum-that.firstNum; if(result == 0){ result = that.secondNum - this.secondNum; if(result == 0){ result = that.thirdNum - this.thirdNum; } } return result; }