Java从Hbase取值分别转化为String和Map

本文上接前面文章:

Hbase初始化并根据RowKey获取数据


1、重写前面的文章中的类HbaseInit.java:

public class HbaseInit {
private Logger logger = LoggerFactory.getLogger(HbaseInit.class);

         //代表转化为String
private GetRow getRow = new GetRow();

        //代表转化为Map
private GetRowMap getRowMap = new GetRowMap();

//初始化Hbase环境变量
static{
System.setProperty("HADOOP_USER_NAME", "sousuo");
}
    public String getValueFromHbase(HbaseTemplate htemplate, String tableName, String rowKey)
    {
        String hbaseRes = "";
        try{
         hbaseRes = htemplate.get(tableName, rowKey, getRow);
        }catch(Exception e){
         logger.error(e.getMessage(), e);
        }
        return hbaseRes;
    }
    / /获取tableName下rowKey下family下qualifier对应的值
    public String getValueByQualifier(HbaseTemplate htemplate, String tableName, String rowKey, String family, String qualifier)
    {
        String hbaseRes = "";
        try{
         hbaseRes = htemplate.get(tableName, rowKey, family, qualifier,  getRow);
        }catch(Exception e){
         logger.error(e.getMessage(), e);
        }
        return hbaseRes;
    }
     //根据RowKey返回所有数据的MAP
    public Map<String, String> getMapFromHbase(HbaseTemplate htemplate, String tableName, String rowKey){
     Map<String, String> hbaseRes = new HashMap<String, String>();
        try{
         hbaseRes = htemplate.get(tableName, rowKey,  getRowMap);
        }catch(Exception e){
         logger.error(e.getMessage(), e);
        }
        return hbaseRes;
    }
}

2、 //代表转化为String
public class GetRow implements RowMapper<String>{
public String mapRow(Result result, int rowNum) throws Exception {   
     String hbaseRes = "";
        List<Cell> ceList =   result.listCells();  
             if(ceList!=null&&ceList.size()>0){  
                 for(Cell cell:ceList){  
                 hbaseRes += Bytes.toString(cell.getFamilyArray(),cell.getFamilyOffset(),cell.getFamilyLength())+  
                             "_"+Bytes.toString(cell.getQualifierArray(),cell.getQualifierOffset(),cell.getQualifierLength())
                              +"="+Bytes.toString( cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())+" ";
            }  
        }  
        return hbaseRes;  
    } 
}

3、 //代表转化为Map
public class GetRowMap implements RowMapper<Map<String, String>>{
public Map<String, String> mapRow(Result result, int rowNum) throws Exception {   
Map<String, String> hbaseRes = new HashMap<String, String>();
        List<Cell> ceList =   result.listCells();  
             if(ceList!=null&&ceList.size()>0){  
                 for(Cell cell:ceList){  
                    String key = Bytes.toString(cell.getFamilyArray(),cell.getFamilyOffset(),cell.getFamilyLength())+  
                             "_"+Bytes.toString(cell.getQualifierArray(),cell.getQualifierOffset(),cell.getQualifierLength());
                    String value = Bytes.toString( cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());
                    hbaseRes.put(key, value);
                 }
             }  
        return hbaseRes;  
    } 
}


4、应用:
Map<String, String> hbaseRes = hbaseInit.getMapFromHbase(htemplate, tableName, rowKey);
     //性别画像
     String sex_value = hbaseRes.get("statistics_sex_value");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值