Java按照时间顺序从hbase中读出数据

1,从hbase中读出数据并存储在ArrayList<Map<String,String>>中,

@Override
    public ArrayList<Map<String, Object>> getAllHistoryOrderByTime(String namespace, String tableName) {
        TableName tablename=TableName.valueOf(FillDataTableName(namespace,tableName));
        Table table = null;
        ArrayList<Map<String,Object>> arrayList = new ArrayList<>();
        try {
            conn = ConnectionFactory.createConnection(conf);
            //管理类
            table = conn.getTable(tablename);
            ResultScanner results = table.getScanner(new Scan());
            for (Result result : results){
                Map<String,Object> map = new HashMap<>();
                for(Cell cell : result.rawCells()){
                    String row = Bytes.toString(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());
                    //String family =  Bytes.toString(cell.getFamilyArray(),cell.getFamilyOffset(),cell.getFamilyLength());
                    String colName = Bytes.toString(cell.getQualifierArray(),cell.getQualifierOffset(),cell.getQualifierLength());
                    String value = Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());
                    map.put("modelName",row);
                    if(colName.equals("tableName")){
                        map.put("tableName",value);
                    }if(colName.equals("project")){
                        map.put("project",value);
                    }if(colName.equals("columns")){
                        ArrayList<String> columnsList = StringOptions.String2ArrayList(value);
                        map.put("columns",columnsList);
                    }if(colName.equals("preProcess")){
                        ArrayList<String> preProcessList = StringOptions.String2ArrayList(value);
                        map.put("preProcess",preProcessList);
                    }if(colName.equals("result")){
                        map.put("result",value);
                    }if(colName.equals("params")){
                        Map<String,String> paramsMap = StringOptions.String2Map(value);
                        map.put("params",paramsMap);
                    }
                    //获取时间戳
                    long lTmstmp = cell.getTimestamp();
                    Date date = new Date(lTmstmp);
                    map.put("Date",date.toString());
                }
                arrayList.add(map);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return SortOptions.sortByTime(arrayList);
    }
其中ArrayList<Map<String,String>>初始化为:
ArrayList<Map<String,String>> arrayList = new ArrayList<>();
arrayList.add(new HashMap<String, String>() {{
    put("Name","1");
    put("Date","Sat Sep 21 16:06:55 CST 2019");
}
});

2、将ArrayList<Map<String,String>>按照时间戳进行排序

public static ArrayList<Map<String,String>> sortByTime(ArrayList<Map<String,String>> inputArrayList){
    Comparator c = new Comparator<Map<String,String>>() {
        @Override
        public int compare(Map<String,String> o1, Map<String,String> o2) {
            // TODO Auto-generated method stub
            if(string2Date(o1.get("Date")).before(string2Date(o2.get("Date"))))
                return 1;
                //注意!!返回值必须是一对相反数,否则无效。jdk1.7以后就是这样。
                //    else return 0; //无效
            else return -1;
        }
    };
    Collections.sort(inputArrayList,c);
    return inputArrayList;
}

3、将字符串转换为Date类型

public static Date string2Date(String strDate) {
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", java.util.Locale.US);
    try {
         date = sdf.parse(strDate.toString());
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return date;
    }

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值