步骤
- 获取table对象
- 创建put对象,对应put命令,封装rowkey、列族、列名、列值
- 通过table对象执行put命令
- 关闭table
添加一列
代码
/**
* 添加数据,只能添加一个列、值
* @param tableName
* @param rowKey
* @param columnFamily
* @param column
* @param value
* @throws IOException
*/
public void put(String tableName,String rowKey,String columnFamily,String column,String value) throws IOException {
//获取table对象
Table table = conn.getTable(TableName.valueOf(tableName));
//创建put对象,对应put命令,封装rowkey、列族、列名、列值
Put put = new Put(Bytes.toBytes(rowKey));
put.addColumn(Bytes.toBytes(columnFamily),Bytes.toBytes(column),Bytes.toBytes(value));
//执行put命令
table.put(put);
//关闭table
table.close();
}
测试
hu.put("book","1000","c1","title","java从入门到放弃");
添加多列
注意: 价格 转成字符串再保存,原因点击
/**
* 添加数据,可以添加多个列、值
* @param tableName
* @param rowKey
* @param columnFamily
* @param columnValue
* @throws IOException
*/
public void put(String tableName,String rowKey,String columnFamily,Map<String,String> columnValue) throws IOException {
//获取table对象
Table table = conn.getTable(TableName.valueOf(tableName));
//创建put对象,对应put命令,封装rowkey、列族、列名、列值
Put put = new Put(Bytes.toBytes(rowKey));
Set<Map.Entry<String, String>> set = columnValue.entrySet();
for(Map.Entry<String, String> entry : set) {
String column=entry.getKey();
String value=entry.getValue();
put.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
}
//执行put命令
table.put(put);
//关闭table
table.close();
}
测试
Map map=new HashMap();
map.put("title","Html从小白到大神");
map.put("author","李雷");
map.put("price","125.00"); //注意价格格式,是字符串比较
hu.put("book","1001","c1",map);
查看数据
在 hbase shell 中执行下面命令:
scan 'book',{FORMATTER => 'toString'}