业务场景为,统计随访表中最近一次访问,且金额小于7 的总数。
 随访表phs_visit主键为ID对应多条访问记录, 需要统计取ID的最大访问时间visitDate, FBS小于7的数据, 统计ID的总数。网上排序方法 sortByKey(), 不能实现对Value的排序。请大神看看有办法解决么?代码如下:(怎么实现对visitTime 实现排序,取最大visitTime记录?)JavaSparkContext ctx = new JavaSparkContext(new SparkConf().setAppName("visitReport"));//HBaseUtils.readFromHBase方法为封装好的,从Hbase中读取数据
JavaPairRDD<ImmutableBytesWritable, Result> visitHbaseRDD = HBaseUtils.readFromHBase(ctx, "phs_visit"); JavaPairRDD<String, Tuple2<String, Long>> visitRdd = visitHbaseRDD.mapToPair(tuple -> {
                Result rs = tuple._2();
                String id = "";                //编号
                String FBS = "";             //金额
                String visitDate  = "";    //本次随访时间                if (rs != null && rs.getRow() != null) {                    if (rs.getValue("CF".getBytes(), "ID".getBytes()) != null) {
                        id = Bytes.toString(rs.getValue("CF".getBytes(), "ID".getBytes())).trim();
                    }                    if (rs.getValue("CF".getBytes(), "FBS".getBytes()) != null) {
                        FBS = Bytes.toString(rs.getValue("CF".getBytes(), "FBS".getBytes())).trim();
                    }                    if (rs.getValue("CF".getBytes(), "VISITDATE".getBytes()) != null) {
                        visitDate = Bytes.toString(rs.getValue("CF".getBytes(), "VISITDATE".getBytes())).trim();
                    }
                }                Long visitTime = 0L;
                if(!StringUtils.isBlank(visitDate)) {
                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
                    Date inputDate = dateFormat.parse(visitDate);
                    visitTime = inputDate.getTime();
                }
                return new Tuple2<>(id, new Tuple2<>(FBS, visitTime));
            });