使用Java对HBase进行操作(二)

上篇blog中讲解了对表的查询以及创建、删除,是对整个表的操作,下面进行对表中的数据的增删改查操作。

四、增添数据

在对表进行数据的增加操作中,可以进行添加一行数据,也可以进行一次添加多行数据。

(1)添加一行数据:

  • 首先先对表进行判断,判断表是否存在,若表存在则通过Connection获取所操作的Table类的一个实例,即将table取出。
 Table table = conn.getTable(TableName.valueOf(tableName));
  •  为添加数据,所以应该指明添加哪一行数据,通过创建一个Put类的对象并传入行键,对该行数据进行唯一标识。
 Put p = new Put(Bytes.toBytes(rowKey));

    HBase数据库中的数据的数据结构实为二进制数组形式,因此将行键传入后,由于行键是字符串类型,因此需先使用toBytes()方法将行键转化成二进制数组的形式。

  • Put对象有了行键之后,下面应对该行数据进行添加列族、列、值
 p.addColumn(Bytes.toBytes(cf),Bytes.toBytes(col),Bytes.toBytes(value));
  • 经过上述操作,可知已将p行对象的数据创建完毕,因此应将该行数据添加到表中。添加后将表关闭。
table.put(p);
table.close();

 完整代码:

public static void addData(String tableName,String rowKey,String cf,String col,String value) throws IOException{
		Configuration cfg = HBaseConfiguration.create();
		cfg.set("hbase.zookeeper.quorum", "centos01");
		cfg.set("hbase.zookeeper.property.clientPort","2181");
		Connection conn = ConnectionFactory.createConnection(cfg);
		HBaseAdmin admin = (HBaseAdmin)conn.getAdmin();
		if(admin.tableExists(tableName)){
		  Table table = conn.getTable(TableName.valueOf(tableName));
		  Put p = new Put(Bytes.toBytes(rowKey));
		  p.addColumn(Bytes.toBytes(cf),Bytes.toBytes(col),Bytes.toBytes(value));
		  table.put(p);
		  table.close();
		  System.out.println("添加成功");
		}
		else 
			System.out.println("该表不存在");
		conn.close();
	}

主函数:

public static void main(String[] args)throws IOException{

addData("t1","2222","cf1","address","jinan");	
}

 命令行查询:

使用scan命令

scan 't1'

实验结果:

实验成功。

(2)添加多行数据

public static void addDatas(String tableName, String[] rowKey, String[] cf,String[] col, String[] value)throws IOException{
		Configuration cfg = new Configuration();
		cfg.set("hbase.zookeeper.quorum", "centos01");
		cfg.set("hbase.zookeeper.property.clientPort","2181");
		Connection conn = ConnectionFactory.createConnection(cfg);
		HBaseAdmin admin = (HBaseAdmin)conn.getAdmin();
		if(admin.tableExists(tableName))
		{
			Table table = conn.getTable(TableName.valueOf(tableName));
			List<Put> puts = new ArrayList<>();
			puts.add(new Put(Bytes.toBytes(rowKey[0])).addColumn(Bytes.toByte
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值