Hbase操作table常见方法示例


首先上我的输出类:


/**
 * 功能:电池历史数据数据结构
 * Created by liuhuichao on 2016/12/5.
 */
public class ResBatteryDataHistory implements Serializable {


    private String batteryNo;

    private Integer batteryType;

    private Float voltageDeviation;

    private Float totalVoltage;

    private String createTime;

    private Integer createUser;

    private Integer source;

    private Float vol1;

    private Float vol2;

    private Float vol3;

    private Float vol4;

    private Float vol5;

    private Float vol6;

    private Float vol7;

    private Float vol8;

    private Float vol9;

    private Float vol10;

    private Float vol11;

    private Float vol12;

    private Float vol13;

    private Float vol14;

    private Float vol15;

    private Float vol16;

    private Float vol17;

    private Float vol18;

    private Float vol19;

    private Float temprature1;

    private Float temprature2;

    private Float chargeNum;

    private Float longtitude;

    private Float latitude;

    private String remarks;

    private Float totalCurrent;

    private Float soc;

    private String testUserName;

    private Integer cityId;

    private Integer vehicleId;


    private static final long serialVersionUID = 1L;

    public String getBatteryNo() {
        return batteryNo;
    }

    public void setBatteryNo(String batteryNo) {
        this.batteryNo = batteryNo;
    }

    public Integer getBatteryType() {
        return batteryType;
    }

    public void setBatteryType(Integer batteryType) {
        this.batteryType = batteryType;
    }

    public Float getVoltageDeviation() {
        return voltageDeviation;
    }

    public void setVoltageDeviation(Float voltageDeviation) {
        this.voltageDeviation = voltageDeviation;
    }

    public Float getTotalVoltage() {
        return totalVoltage;
    }

    public void setTotalVoltage(Float totalVoltage) {
        this.totalVoltage = totalVoltage;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public Integer getCreateUser() {
        return createUser;
    }

    public void setCreateUser(Integer createUser) {
        this.createUser = createUser;
    }

    public Integer getSource() {
        return source;
    }

    public void setSource(Integer source) {
        this.source = source;
    }

    public Float getVol1() {
        return vol1;
    }

    public void setVol1(Float vol1) {
        this.vol1 = vol1;
    }

    public Float getVol2() {
        return vol2;
    }

    public void setVol2(Float vol2) {
        this.vol2 = vol2;
    }

    public Float getVol3() {
        return vol3;
    }

    public void setVol3(Float vol3) {
        this.vol3 = vol3;
    }

    public Float getVol4() {
        return vol4;
    }

    public void setVol4(Float vol4) {
        this.vol4 = vol4;
    }

    public Float getVol5() {
        return vol5;
    }

    public void setVol5(Float vol5) {
        this.vol5 = vol5;
    }

    public Float getVol6() {
        return vol6;
    }

    public void setVol6(Float vol6) {
        this.vol6 = vol6;
    }

    public Float getVol7() {
        return vol7;
    }

    public void setVol7(Float vol7) {
        this.vol7 = vol7;
    }

    public Float getVol8() {
        return vol8;
    }

    public void setVol8(Float vol8) {
        this.vol8 = vol8;
    }

    public Float getVol9() {
        return vol9;
    }

    public void setVol9(Float vol9) {
        this.vol9 = vol9;
    }

    public Float getVol10() {
        return vol10;
    }

    public void setVol10(Float vol10) {
        this.vol10 = vol10;
    }

    public Float getVol11() {
        return vol11;
    }

    public void setVol11(Float vol11) {
        this.vol11 = vol11;
    }

    public Float getVol12() {
        return vol12;
    }

    public void setVol12(Float vol12) {
        this.vol12 = vol12;
    }

    public Float getVol13() {
        return vol13;
    }

    public void setVol13(Float vol13) {
        this.vol13 = vol13;
    }

    public Float getVol14() {
        return vol14;
    }

    public void setVol14(Float vol14) {
        this.vol14 = vol14;
    }

    public Float getVol15() {
        return vol15;
    }

    public void setVol15(Float vol15) {
        this.vol15 = vol15;
    }

    public Float getVol16() {
        return vol16;
    }

    public void setVol16(Float vol16) {
        this.vol16 = vol16;
    }

    public Float getVol17() {
        return vol17;
    }

    public void setVol17(Float vol17) {
        this.vol17 = vol17;
    }

    public Float getVol18() {
        return vol18;
    }

    public void setVol18(Float vol18) {
        this.vol18 = vol18;
    }

    public Float getVol19() {
        return vol19;
    }

    public void setVol19(Float vol19) {
        this.vol19 = vol19;
    }

    public Float getTemprature1() {
        return temprature1;
    }

    public void setTemprature1(Float temprature1) {
        this.temprature1 = temprature1;
    }

    public Float getTemprature2() {
        return temprature2;
    }

    public void setTemprature2(Float temprature2) {
        this.temprature2 = temprature2;
    }

    public Float getChargeNum() {
        return chargeNum;
    }

    public void setChargeNum(Float chargeNum) {
        this.chargeNum = chargeNum;
    }

    public Float getLongtitude() {
        return longtitude;
    }

    public void setLongtitude(Float longtitude) {
        this.longtitude = longtitude;
    }

    public Float getLatitude() {
        return latitude;
    }

    public void setLatitude(Float latitude) {
        this.latitude = latitude;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public Float getTotalCurrent() {
        return totalCurrent;
    }

    public void setTotalCurrent(Float totalCurrent) {
        this.totalCurrent = totalCurrent;
    }

    public Float getSoc() {
        return soc;
    }

    public void setSoc(Float soc) {
        this.soc = soc;
    }

    public String getTestUserName() {
        return testUserName;
    }

    public void setTestUserName(String testUserName) {
        this.testUserName = testUserName;
    }

    public Integer getCityId() {
        return cityId;
    }

    public void setCityId(Integer cityId) {
        this.cityId = cityId;
    }

    public Integer getVehicleId() {
        return vehicleId;
    }

    public void setVehicleId(Integer vehicleId) {
        this.vehicleId = vehicleId;
    }

    @Override
    public String toString() {
        return "ResBatteryDataHistory{" +
                "batteryNo:'" + batteryNo + '\'' +
                ", batteryType:" + batteryType +
                ", voltageDeviation:" + voltageDeviation +
                ", totalVoltage:" + totalVoltage +
                ", createTime:'" + createTime + '\'' +
                ", createUser:" + createUser +
                ", source:" + source +
                ", vol1:" + vol1 +
                ", vol2:" + vol2 +
                ", vol3:" + vol3 +
                ", vol4:" + vol4 +
                ", vol5:" + vol5 +
                ", vol6:" + vol6 +
                ", vol7:" + vol7 +
                ", vol8:" + vol8 +
                ", vol9:" + vol9 +
                ", vol10:" + vol10 +
                ", vol11:" + vol11 +
                ", vol12:" + vol12 +
                ", vol13:" + vol13 +
                ", vol14:" + vol14 +
                ", vol15:" + vol15 +
                ", vol16:" + vol16 +
                ", vol17:" + vol17 +
                ", vol18:" + vol18 +
                ", vol19:" + vol19 +
                ", temprature1:" + temprature1 +
                ", temprature2:" + temprature2 +
                ", chargeNum:" + chargeNum +
                ", longtitude:" + longtitude +
                ", latitude:" + latitude +
                ", remarks:'" + remarks + '\'' +
                ", totalCurrent:" + totalCurrent +
                ", soc:" + soc +
                ", testUserName:'" + testUserName + '\'' +
                ", cityId:" + cityId +
                ", vehicleId:" + vehicleId +
                '}';
    }
}



封装查询条件类:


/**
 *
 * HBase条件查询封装实体类
 * Created by liuhuichao on 2016/12/13.
 */
public class QueryCondition {

    String family; //列族
    String qualifier; //列修饰符
    CompareFilter.CompareOp  compareOp; //操作符
    byte[] value; //列值
    FilterList.Operator operator;  //连接操作符


    public QueryCondition(String family, String qualifier, CompareFilter.CompareOp compareOp, byte[] value) {
        this.family = family;
        this.qualifier = qualifier;
        this.compareOp = compareOp;
        this.value = value;
    }

    public QueryCondition(String family, String qualifier, CompareFilter.CompareOp compareOp, byte[] value, FilterList.Operator operator) {
        this.family = family;
        this.qualifier = qualifier;
        this.compareOp = compareOp;
        this.value = value;
        this.operator = operator;
    }

    public String getFamily() {
        return family;
    }

    public void setFamily(String family) {
        this.family = family;
    }

    public String getQualifier() {
        return qualifier;
    }

    public void setQualifier(String qualifier) {
        this.qualifier = qualifier;
    }

    public CompareFilter.CompareOp getCompareOp() {
        return compareOp;
    }

    public void setCompareOp(CompareFilter.CompareOp compareOp) {
        this.compareOp = compareOp;
    }

    public byte[] getValue() {
        return value;
    }

    public void setValue(byte[] value) {
        this.value = value;
    }

    public FilterList.Operator getOperator() {
        return operator;
    }

    public void setOperator(FilterList.Operator operator) {
        this.operator = operator;
    }
}



查询操作类:


/**
 * 功能:管理电池历史数据
 * Created by liuhuichao on 2016/12/8.
 */
public class HBaseBatteryDataManager extends Thread {

    private static class HBaseBatteryDataMasterHolder{
        private static final HBaseBatteryDataManager INSTANCE = new HBaseBatteryDataManager();
    }

    public  final String  colunm_family_baseData="baseData";//列族baseData
    public  final String  colunm_family_extraData="extraData";//列族extraData

    /**
     * 构造:配置初始化
     */
    private HBaseBatteryDataManager() {


        //集群环境下使用的配置代码
      /*  config= HBaseConfiguration.create();
        config.set("hbase.master",""); //HMaster地址
        config.set("hbase.zookeeper.property.clientPort",""); //Zookeeper端口设置
        config.set("hbase.zookeeper.quorum","");//Zookeeper队列名称
        try{
            table=new HTable(config, Bytes.toBytes("demo_table_name")); //连接表
            admin=new HBaseAdmin(config);
        }catch (IOException e){
            e.printStackTrace();
        }*/


        //单机环境下的config
        config= HBaseConfiguration.create();
        config.set("hbase.zookeeper.quorum","lhc-centos");
        try{
            table=new HTable(config, Bytes.toBytes("batteryTest")); //连接表
        }catch (IOException e){
            e.printStackTrace();
        }

    }

    /**
     * 外部调用这个类的方法
     * @return
     */
    public static final HBaseBatteryDataManager getInstance() {
        return HBaseBatteryDataMasterHolder.INSTANCE;
    }

    private Configuration config;
    public HTable table;
    public HBaseAdmin admin;

    /**
     * 增加一条电池历史数据
     * @param resBatteryDataHistory
     */
    public void addBatteryData(ResBatteryDataHistory resBatteryDataHistory) throws IOException {
        if(resBatteryDataHistory==null){
            return;
        }
        table.put(getSavePut(resBatteryDataHistory));
        table.close();
    }

    /**
     * 批量添加电池数据
     * @param batteryList
     */
    public void addBatteryDataList(List<ResBatteryDataHistory> batteryList) throws IOException {
        List<Put> puts = new ArrayList<Put>();
        for(ResBatteryDataHistory battery : batteryList){
            puts.add(getSavePut(battery));
        }
        table.put(puts);
        table.close();
    }

    /**
     * 根据rowKey获取电池历史数据
     * @param rowKey
     * @return
     */
    public ResBatteryDataHistory getBatteryDataHistoryByRowKey(String rowKey) throws IOException {
        Get get=new Get(Bytes.toBytes(rowKey));
        Result result=table.get(get);
        if(result==null){
            return null;
        }
        return convertToData(result);
    }

    /**
     * 获取电池数据某个单元格的数据
     * @param rowKey
     * @param colFamily
     * @param col
     * @return
     */
    public  byte[] getCellData(String rowKey,String colFamily,String col) throws IOException {
        Get get = new Get(Bytes.toBytes(rowKey));
        get.addColumn(Bytes.toBytes(colFamily),Bytes.toBytes(col));
        //获取的result数据是结果集,还需要格式化输出想要的数据才行
        Result result = table.get(get);
        byte[] cellValue= result.getValue(colFamily.getBytes(),col==null?null:col.getBytes());
        table.close();
        return cellValue;
    }

    /**
     * 更新表中的一个单元格
     * @param rowKey
     * @param familyName
     * @param columnName
     * @param value
     */
   public void  updateCell(String rowKey,String familyName, String columnName, byte[] value) throws IOException {
       Put put = new Put(Bytes.toBytes(rowKey));
       put.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName),
               value);
       table.put(put);
       table.close();
   }

    /**
     * 删除一个单元格
     * @param rowKey
     * @param familyName
     * @param columnName
     */
    public void deleteCell( String rowKey,String familyName, String columnName) throws IOException {
        Delete delete = new Delete(Bytes.toBytes(rowKey));
        delete.addColumn(Bytes.toBytes(familyName),
                Bytes.toBytes(columnName));
        table.delete(delete);
        table.close();
    }

    /**
     * 删除一行
     * @param rowKey
     */
    public void deleteAllColumns(String rowKey) throws IOException {
        Delete delete = new Delete(Bytes.toBytes(rowKey));
        table.delete(delete);
        table.close();
    }

    /**
     * 获取所有数据
     * @return
     */
    public List<ResBatteryDataHistory> getResultScans() throws IOException {
        Scan scan = new Scan();
        ResultScanner resultScanner = null;
        List<ResBatteryDataHistory> list=new ArrayList<>() ;
        long beginTime=System.currentTimeMillis();
        resultScanner=table.getScanner(scan);
        long endTime=System.currentTimeMillis();
        double spendTime=(endTime-beginTime)/1000.0;
        System.out.println("扫描表共计时间:------"+spendTime);
        if(resultScanner==null){
            return null;
        }
        for (Result result : resultScanner){
            list.add(convertToData(result));
        }
        table.close();
        return list;
    }


    /**
     *  * 根据单个列查询数据 【and查询】
     *      例如,查询extraData:create_user==‘1’的所有数据
     * @param queryConditionList  条件拼接列表
     * @return
     * @throws IOException
     */
    public List<ResBatteryDataHistory> QueryDataByConditionsAnd(List<QueryCondition> queryConditionList) throws IOException {
        if(queryConditionList==null || queryConditionList.size()<1){
            return null;
        }
        ResultScanner rs = null;
        List<ResBatteryDataHistory> list=new ArrayList<>() ;
        List<Filter> filters = new ArrayList<Filter>();
        for(QueryCondition query : queryConditionList){
            SingleColumnValueFilter filter = new SingleColumnValueFilter(
                    Bytes.toBytes(query.getFamily()), Bytes.toBytes(query.getQualifier()),
                    query.getCompareOp(),query.getValue());
            filter.setFilterIfMissing(true); //设置这些列不存在的数据不返回
            filters.add(filter);
        }
        FilterList filterList = new FilterList(filters);
        Scan scan = new Scan();
        scan.setFilter(filterList);
        rs = table.getScanner(scan);
        for (Result result : rs){
            list.add(convertToData(result));
        }
        table.close();
        return list;
    }


    /**
     * 查询数据 【Or查询】
     * @param queryConditionList
     * @return
     */
    public List<ResBatteryDataHistory> QueryDataByConditionsOr(List<QueryCondition> queryConditionList) throws IOException {
        if(queryConditionList==null || queryConditionList.size()<1){
            return null;
        }
        List<ResBatteryDataHistory> list=new ArrayList<>() ;
        ResultScanner rs = null;
        List<Filter> filters = new ArrayList<Filter>();
        Scan scan = new Scan();
        for(QueryCondition query : queryConditionList){
            SingleColumnValueFilter filter = new SingleColumnValueFilter(
                    Bytes.toBytes(query.getFamily()), Bytes.toBytes(query.getQualifier()),
                    query.getCompareOp(),query.getValue());
            filter.setFilterIfMissing(true);
            filters.add(filter);
        }
        FilterList filterList = new FilterList(
                FilterList.Operator.MUST_PASS_ONE, filters);
        scan.setFilter(filterList);
        rs = table.getScanner(scan);
        for (Result result : rs){
            list.add(convertToData(result));
        }
        table.close();
        return list;
    }

    /**
     * 混合条件查询
     * @param queryConditionList
     * @return
     * @throws IOException
     */
    public List<ResBatteryDataHistory> QueryDataByConditions(List<QueryCondition> queryConditionList) throws IOException {
        if(queryConditionList==null || queryConditionList.size()<1){
            return null;
        }
        List<ResBatteryDataHistory> list=new ArrayList<>() ;
        Scan scan = new Scan();
        FilterList filterList = null;
        FilterList.Operator operator = null;
        List<Filter> filters = new ArrayList<Filter>();
        ResultScanner rs = null;
        for(QueryCondition query : queryConditionList){

            SingleColumnValueFilter filter = new SingleColumnValueFilter(
                    Bytes.toBytes(query.getFamily()), Bytes.toBytes(query.getQualifier()),
                    query.getCompareOp(),query.getValue());
            filter.setFilterIfMissing(true);  //去掉没有这种列的数据

            if(query.getOperator()!=null){//有操作符的时候
                if (operator == null) {
                    operator = query.getOperator();
                    filterList = new FilterList(
                            query.getOperator());
                    filterList.addFilter(filter);
                    System.out.println("filterList==1" + filterList);
                } else if (operator.equals(query.getOperator())) {
                    filterList.addFilter(filter);
                } else {
                    filterList.addFilter(filter);
                    System.out.println("filterList==2" + filterList);
                    FilterList addFilterList = new FilterList(
                            query.getOperator());
                    addFilterList.addFilter(filterList);
                    System.out.println("addFilterList==1" + addFilterList);
                    filterList = addFilterList;
                    System.out.println("filterList==3" + filterList);
                }
            } else {
                if (filterList == null) {
                    filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);// 默认只有一个条件的时候
                }
                filterList.addFilter(filter);
            }
        }
        scan.setFilter(filterList);
        rs = table.getScanner(scan);
        for (Result result : rs){
            list.add(convertToData(result));
        }
        table.close();
        return list;
    }

    /**
     *混合条件分页查询
     * @param queryConditionList
     * @param pageSize
     * @param lastRow
     * @return
     */
    public  List<ResBatteryDataHistory>  QueryDataByConditionsAndPage(List<QueryCondition> queryConditionList, int pageSize,byte[] lastRow) throws IOException {
        List<ResBatteryDataHistory> list=new ArrayList<>() ;
        final byte[] POSTFIX = new byte[] { 0x00 };
        ResultScanner rs = null;
        Scan scan = new Scan();
        FilterList filterList = null;
        FilterList.Operator operator = null;

        //拼接查询条件
        for(QueryCondition query : queryConditionList){
            SingleColumnValueFilter filter = new SingleColumnValueFilter(
                    Bytes.toBytes(query.getFamily()), Bytes.toBytes(query.getQualifier()),
                    query.getCompareOp(),query.getValue());
            filter.setFilterIfMissing(true);  //去掉没有这种列的数据

            if(query.getOperator()!=null){//有操作符的时候
                if (operator == null) {
                    operator = query.getOperator();
                    filterList = new FilterList(
                            query.getOperator());
                    filterList.addFilter(filter);
                    System.out.println("filterList==1" + filterList);
                } else if (operator.equals(query.getOperator())) {
                    filterList.addFilter(filter);
                } else {
                    filterList.addFilter(filter);
                    System.out.println("filterList==2" + filterList);
                    FilterList addFilterList = new FilterList(
                            query.getOperator());
                    addFilterList.addFilter(filterList);
                    System.out.println("addFilterList==1" + addFilterList);
                    filterList = addFilterList;
                    System.out.println("filterList==3" + filterList);
                }
            } else {
                if (filterList == null) {
                    filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);// 默认只有一个条件的时候
                }
                filterList.addFilter(filter);
            }
        }

        FilterList pageFilterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);// 默认只有一个条件的时候
        Filter pageFilter = new PageFilter(pageSize);
        pageFilterList.addFilter(pageFilter);
        pageFilterList.addFilter(filterList);
        if (lastRow != null) {
            // 注意这里添加了POSTFIX操作,不然死循环了
            byte[] startRow = Bytes.add(lastRow, POSTFIX);
            scan.setStartRow(startRow);
        }
        System.out.println(pageFilterList + ":pageFilterList");
        scan.setFilter(pageFilterList);
        rs = table.getScanner(scan);
        for (Result result : rs){
            list.add(convertToData(result));
        }
        table.close();
        return list;
    }

    /**
     * 分页查询——无条件
     * @param pageSize
     * @param lastRow
     * @return
     * @throws IOException
     */
    public  List<ResBatteryDataHistory>  QueryDataByPage( int pageSize,byte[] lastRow) throws IOException {
        List<ResBatteryDataHistory> list=new ArrayList<>() ;
        final byte[] POSTFIX = new byte[] { 0x00 };
        Scan scan = new Scan();
        ResultScanner resultScanner = null;
        Table table = null;
        Filter filter = new PageFilter(pageSize);
        scan.setFilter(filter);
        if (lastRow != null) {
            // 注意这里添加了POSTFIX操作,不然死循环了
            byte[] startRow = Bytes.add(lastRow, POSTFIX);
            scan.setStartRow(startRow);
        }
        resultScanner = table.getScanner(scan);
        for (Result result : resultScanner){
            list.add(convertToData(result));
        }
        table.close();
        return list;
    }


    /**
     * 查询总行数
     * @param pageSize
     * @return
     */
    public int QueryDataByPage(int pageSize) throws IOException {
        final byte[] POSTFIX = new byte[] { 0x00 };
        int totalRows = 0;
        Filter filter = new PageFilter(pageSize);
        byte[] lastRow = null;
        while (true) {
            Scan scan = new Scan();
            scan.setFilter(filter);
            if (lastRow != null) {
                // 注意这里添加了POSTFIX操作,不然死循环了
                byte[] startRow = Bytes.add(lastRow, POSTFIX);
                scan.setStartRow(startRow);
            }
            ResultScanner scanner = table.getScanner(scan);
            int localRows = 0;
            Result result;
            while ((result = scanner.next()) != null) {
                System.out.println(localRows++ + ":" + result);
                totalRows++;
                lastRow = result.getRow();
            }
            scanner.close();
            if (localRows == 0)
                break;
        }
        return totalRows;
    }

    /**
     * 将Result转换成电池历史数据对象
     * @param result
     * @return
     */
    private ResBatteryDataHistory convertToData(Result result){
        ResBatteryDataHistory resBatteryDataHistory=new ResBatteryDataHistory();
        if(result==null || result.list().size()<1){
            return null;
        }
        for(KeyValue kv :result.raw()){
            if(Bytes.toString(kv.getFamily()).equals(colunm_family_baseData)){
                switch (Bytes.toString(kv.getQualifier())){
                    case "battery_no":
                        resBatteryDataHistory.setBatteryNo(Bytes.toString(kv.getValue()));
                        break;
                    case "battery_type":
                        resBatteryDataHistory.setBatteryType(Bytes.toInt(kv.getValue()));
                        break;
                    case "voltage_deviation":
                        resBatteryDataHistory.setVoltageDeviation(Bytes.toFloat(kv.getValue()));
                        break;
                    case "total_voltage":
                        resBatteryDataHistory.setTotalVoltage(Bytes.toFloat(kv.getValue()));
                        break;
                    case "total_current":
                        resBatteryDataHistory.setTotalCurrent(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol1":
                        resBatteryDataHistory.setVol1(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol2":
                        resBatteryDataHistory.setVol2(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol3":
                        resBatteryDataHistory.setVol3(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol4":
                        resBatteryDataHistory.setVol4(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol5":
                        resBatteryDataHistory.setVol5(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol6":
                        resBatteryDataHistory.setVol6(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol7":
                        resBatteryDataHistory.setVol7(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol8":
                        resBatteryDataHistory.setVol8(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol9":
                        resBatteryDataHistory.setVol9(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol10":
                        resBatteryDataHistory.setVol10(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol11":
                        resBatteryDataHistory.setVol11(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol12":
                        resBatteryDataHistory.setVol12(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol13":
                        resBatteryDataHistory.setVol13(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol14":
                        resBatteryDataHistory.setVol14(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol15":
                        resBatteryDataHistory.setVol15(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol16":
                        resBatteryDataHistory.setVol16(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol17":
                        resBatteryDataHistory.setVol17(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol18":
                        resBatteryDataHistory.setVol18(Bytes.toFloat(kv.getValue()));
                        break;
                    case "vol19":
                        resBatteryDataHistory.setVol19(Bytes.toFloat(kv.getValue()));
                        break;
                    case "temprature1":
                        resBatteryDataHistory.setTemprature1(Bytes.toFloat(kv.getValue()));
                        break;
                    case "temprature2":
                        resBatteryDataHistory.setTemprature2(Bytes.toFloat(kv.getValue()));
                        break;
                    case "charge_num":
                        resBatteryDataHistory.setChargeNum(Bytes.toFloat(kv.getValue()));
                        break;
                    case "soc":
                        resBatteryDataHistory.setSoc(Bytes.toFloat(kv.getValue()));
                        break;
                    case "create_time":
                        resBatteryDataHistory.setCreateTime(Bytes.toString(kv.getValue()));
                        break;
                    case "city_id":
                        resBatteryDataHistory.setCityId(Bytes.toInt(kv.getValue()));
                        break;
                    case "vehicle_id":
                        resBatteryDataHistory.setVehicleId(Bytes.toInt(kv.getValue()));
                        break;
                }
            }
            if(Bytes.toString(kv.getFamily()).equals(colunm_family_extraData)){
                switch (Bytes.toString(kv.getQualifier())){
                    case "create_user" :
                        resBatteryDataHistory.setCreateUser(Bytes.toInt(kv.getValue()));
                        break;
                    case "source" :
                        resBatteryDataHistory.setSource(Bytes.toInt(kv.getValue()));
                        break;
                    case "longtitude" :
                        resBatteryDataHistory.setLongtitude(Bytes.toFloat(kv.getValue()));
                        break;
                    case "latitude" :
                        resBatteryDataHistory.setLatitude(Bytes.toFloat(kv.getValue()));
                        break;
                    case "remarks" :
                        resBatteryDataHistory.setRemarks(Bytes.toString(kv.getValue()));
                        break;
                    case "test_user_name" :
                        resBatteryDataHistory.setTestUserName(Bytes.toString(kv.getValue()));
                        break;
                }
            }
        }
        return  resBatteryDataHistory;
    }

    /**
     * 获取插入数据的Put对象
     * @param resBatteryDataHistory
     * @return
     */
    private Put getSavePut(ResBatteryDataHistory resBatteryDataHistory){
        Put put=new Put(Bytes.toBytes(resBatteryDataHistory.getBatteryNo()+System.currentTimeMillis()));
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("battery_no"),Bytes.toBytes(resBatteryDataHistory.getBatteryNo()));//电池编号
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("battery_type"),Bytes.toBytes(resBatteryDataHistory.getBatteryType()));//电池类型
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("voltage_deviation"),Bytes.toBytes(resBatteryDataHistory.getVoltageDeviation()));//压差
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("total_voltage"),Bytes.toBytes(resBatteryDataHistory.getTotalVoltage()));//总电压
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("total_current"),Bytes.toBytes(resBatteryDataHistory.getTotalCurrent()));//总电流
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol1"),Bytes.toBytes(resBatteryDataHistory.getVol1()));//电芯电压1
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol2"),Bytes.toBytes(resBatteryDataHistory.getVol2()));//电芯电压2
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol3"),Bytes.toBytes(resBatteryDataHistory.getVol3()));//电芯电压3
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol4"),Bytes.toBytes(resBatteryDataHistory.getVol4()));//电芯电压4
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol5"),Bytes.toBytes(resBatteryDataHistory.getVol5()));//电芯电压5
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol6"),Bytes.toBytes(resBatteryDataHistory.getVol6()));//电芯电压6
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol7"),Bytes.toBytes(resBatteryDataHistory.getVol7()));//电芯电压7
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol8"),Bytes.toBytes(resBatteryDataHistory.getVol8()));//电芯电压8
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol9"),Bytes.toBytes(resBatteryDataHistory.getVol9()));//电芯电压9
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol10"),Bytes.toBytes(resBatteryDataHistory.getVol10()));//电芯电压10
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol11"),Bytes.toBytes(resBatteryDataHistory.getVol11()));//电芯电压11
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol12"),Bytes.toBytes(resBatteryDataHistory.getVol12()));//电芯电压12
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol13"),Bytes.toBytes(resBatteryDataHistory.getVol13()));//电芯电压13
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol14"),Bytes.toBytes(resBatteryDataHistory.getVol14()));//电芯电压14
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol15"),Bytes.toBytes(resBatteryDataHistory.getVol15()));//电芯电压15
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol16"),Bytes.toBytes(resBatteryDataHistory.getVol16()));//电芯电压16
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol17"),Bytes.toBytes(resBatteryDataHistory.getVol17()));//电芯电压17
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol18"),Bytes.toBytes(resBatteryDataHistory.getVol18()));//电芯电压18
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vol19"),Bytes.toBytes(resBatteryDataHistory.getVol19()));//电芯电压19
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("temprature1"),Bytes.toBytes(resBatteryDataHistory.getTemprature1()));//温度1
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("temprature2"),Bytes.toBytes(resBatteryDataHistory.getTemprature2()));//温度2
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("charge_num"),Bytes.toBytes(resBatteryDataHistory.getChargeNum()));//充电次数
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("soc"),Bytes.toBytes(resBatteryDataHistory.getSoc()));//总电压
        put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("create_time"),Bytes.toBytes(resBatteryDataHistory.getCreateTime()));//创建时间
        if(resBatteryDataHistory.getCityId()!=null){
            put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("city_id"),Bytes.toBytes(resBatteryDataHistory.getCityId()));//城市ID
        }
        if(resBatteryDataHistory.getVehicleId()!=null){
            put.addColumn(Bytes.toBytes(colunm_family_baseData),Bytes.toBytes("vehicle_id"),Bytes.toBytes(resBatteryDataHistory.getVehicleId()));//车辆ID
        }
        put.addColumn(Bytes.toBytes(colunm_family_extraData),Bytes.toBytes("create_user"),Bytes.toBytes(resBatteryDataHistory.getCreateUser()));//创建人
        put.addColumn(Bytes.toBytes(colunm_family_extraData),Bytes.toBytes("source"),Bytes.toBytes(resBatteryDataHistory.getSource()));//数据来源
        put.addColumn(Bytes.toBytes(colunm_family_extraData),Bytes.toBytes("longtitude"),Bytes.toBytes(resBatteryDataHistory.getLongtitude()));//精度
        put.addColumn(Bytes.toBytes(colunm_family_extraData),Bytes.toBytes("latitude"),Bytes.toBytes(resBatteryDataHistory.getLatitude()));//纬度
        put.addColumn(Bytes.toBytes(colunm_family_extraData),Bytes.toBytes("remarks"),Bytes.toBytes(resBatteryDataHistory.getRemarks()));//备注
        put.addColumn(Bytes.toBytes(colunm_family_extraData),Bytes.toBytes("test_user_name"),Bytes.toBytes(resBatteryDataHistory.getTestUserName()));//测试用户
        return put;
    }


   }




单元测试代码:


/**
 * 功能:测试HBase的工具类
 * Created by liuhuichao on 2016/12/14.
 */
public class HBaseBatteryManagerTest {

    HBaseBatteryDataManager manager= HBaseBatteryDataManager.getInstance();

    /**
     * 测试Hbase的单条Put操作
     */
    @Test
    public void testPut() throws IOException {
        ResBatteryDataHistory battery=new ResBatteryDataHistory();
        battery.setBatteryNo("4015106002");
        battery.setBatteryType(0);
        battery.setVoltageDeviation(1F);
        battery.setTotalVoltage(1F);
        battery.setCreateTime("2016-12-12 11:11:11");
        battery.setCreateUser(250);
        battery.setSource(3);
        battery.setVol1(1F);
        battery.setVol2(1F);
        battery.setVol3(1F);
        battery.setVol4(1F);
        battery.setVol5(1F);
        battery.setVol6(1F);
        battery.setVol7(1F);
        battery.setVol8(1F);
        battery.setVol9(1F);
        battery.setVol10(1F);
        battery.setVol11(1F);
        battery.setVol12(1F);
        battery.setVol13(1F);
        battery.setVol14(1F);
        battery.setVol15(1F);
        battery.setVol16(1F);
        battery.setVol17(1F);
        battery.setVol18(1F);
        battery.setVol19(1F);
        battery.setTemprature1(1F);
        battery.setTemprature2(1F);
        battery.setChargeNum(11F);
        battery.setLongtitude(12F);
        battery.setLatitude(12F);
        battery.setRemarks("lhc-代码测试");
        battery.setTotalCurrent(22F);
        battery.setSoc(22F);
        battery.setTestUserName("lhc");
        battery.setCityId(11011);
        battery.setVehicleId(11011);
        manager.addBatteryData(battery);
    }

    @Test
    public void addBatteryDataListTest() throws IOException {
        List<ResBatteryDataHistory> batteryList=new ArrayList<>();
        for(int i=20000;i<200000;i++){
            ResBatteryDataHistory battery=new ResBatteryDataHistory();
            battery.setBatteryNo(String.valueOf(i));
            battery.setBatteryType(0);
            battery.setVoltageDeviation(1F);
            battery.setTotalVoltage(1F);
            battery.setCreateTime("2016-12-12 11:11:11");
            battery.setCreateUser(250);
            battery.setSource(3);
            battery.setVol1(1F);
            battery.setVol2(1F);
            battery.setVol3(1F);
            battery.setVol4(1F);
            battery.setVol5(1F);
            battery.setVol6(1F);
            battery.setVol7(1F);
            battery.setVol8(1F);
            battery.setVol9(1F);
            battery.setVol10(1F);
            battery.setVol11(1F);
            battery.setVol12(1F);
            battery.setVol13(1F);
            battery.setVol14(1F);
            battery.setVol15(1F);
            battery.setVol16(1F);
            battery.setVol17(1F);
            battery.setVol18(1F);
            battery.setVol19(1F);
            battery.setTemprature1(1F);
            battery.setTemprature2(1F);
            battery.setChargeNum(11F);
            battery.setLongtitude(12F);
            battery.setLatitude(12F);
            battery.setRemarks("lhc-代码测试");
            battery.setTotalCurrent(22F);
            battery.setSoc(22F);
            battery.setTestUserName("lhc");
            battery.setCityId(11011);
            battery.setVehicleId(11011);
            batteryList.add(battery);
        }
        long begin=System.currentTimeMillis();
        System.out.println("开始存入:"+begin);
        manager.addBatteryDataList(batteryList);
        long end=System.currentTimeMillis();
        System.out.println("结束存入:"+end);
        System.out.println((end-begin)/1000.0);
    }

    /**
     * 测试根据RowKey获取数据
     * @throws IOException
     */
    @Test
    public void testGetByRowKey() throws IOException {
        System.out.println(manager.getBatteryDataHistoryByRowKey("40151060021481685540182"));
    }

    /**
     * 测试获取单元格数据
     */
    @Test
    public void getCellDataTest() throws IOException {
        System.out.println(Bytes.toFloat(manager.getCellData("40151060021481685540182",manager.colunm_family_baseData,"vol1")));
    }


    /**
     * 更新用户名
     * @throws IOException
     */
    @Test
    public void updateCellTest() throws IOException {
        System.out.println(manager.getBatteryDataHistoryByRowKey("40151060021481685540182"));
        manager.updateCell("40151060021481685540182",manager.colunm_family_extraData,"test_user_name",Bytes.toBytes("liuhuichao128"));
        System.out.println(manager.getBatteryDataHistoryByRowKey("40151060021481685540182"));
    }

    /**
     * 测试表扫描
     * @throws IOException
     */
    @Test
    public void scanTest() throws IOException {
        System.out.println( manager.getResultScans().size());
    }


    /**
     * 测试and查询
     */
    @Test
    public void QueryDataByConditionsAnd() throws IOException {
        List<QueryCondition> queryConditionList=new ArrayList<>();
        queryConditionList.add(new QueryCondition(manager.colunm_family_baseData,"vol1", CompareFilter.CompareOp.EQUAL,Bytes.toBytes(1F)));
        long begin=System.currentTimeMillis();
        System.out.println(manager.QueryDataByConditionsAnd(queryConditionList).size());
        long end=System.currentTimeMillis();
        System.out.println((end-begin)/1000.00);
    }

    /**
     * 测试or查询
     * @throws IOException
     */
    @Test
    public void QueryDataByConditionsOrTest() throws IOException {
        List<QueryCondition> queryConditionList=new ArrayList<>();
        queryConditionList.add(new QueryCondition(manager.colunm_family_baseData,"vol1", CompareFilter.CompareOp.EQUAL,Bytes.toBytes(1F)));
        System.out.println(manager.QueryDataByConditionsOr(queryConditionList));
    }



}



自行体会吧。





上一篇:使用Recast.AI创建具有人工智能的聊天机器人


下一篇:EOS商业落地利器:多签名操作与应用