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;
}