HBase--对数据的增删查改操作

本文介绍了如何在HBase中进行数据的增删改查操作。通过代码示例展示了修改tel字段后,数据的多版本特性,以及删除数据实际上是标记删除。此外,还探讨了使用GET和SCAN两种查询方式,其中SCAN查询允许更灵活地获取数据。最后,建议将这些操作封装成工具类以便于后续使用。
摘要由CSDN通过智能技术生成

    之前学习了HBase中对表的创建查看删除操作,现在进一步学习对表里面的数据进行操作。首先是增删改,码上一段代码:

package com.yc.hadoop.hbase;

import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

public class HbaseAPI03 {
	public static void main(String[] args) throws IOException {
		Configuration conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "slave01,slave02,slave03");
		ExecutorService pool = Executors.newCachedThreadPool();
		Connection con = ConnectionFactory.createConnection(conf, pool);
		Admin admin = con.getAdmin();  //管理者

		TableName tn = TableName.valueOf("student");  //表对象
		if(admin.tableExists(tn)){
			Table t = con.getTable(tn,pool);

			//添加数据
			Put put = new Put(Bytes.toBytes("gr"));  //根据rowkey(行键)值创建添加数据对象
			put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("gr")).
			addColumn(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("21")).
			addColumn(Bytes.toBytes("info"), Bytes.toBytes("sex"), Bytes.toBytes("女")).
			addColumn(Bytes.toBytes("info"), Bytes.toBytes("tel"), Bytes.toBytes("12345678901"));
			t.put(put);   //写入数据是put
			System.out.println("添加数据成功。。。。");

			//修改数据
			//修改与添加操作一样,区别是有数据(由rowkey,columnfamily,qualifier确定是否是有数据)时,
                        //再重复添加是修改
			put = new Put(Bytes.toBytes("gr")).
					addColumn(Bytes.toBytes("info"), Bytes.toBytes("tel"), Bytes.toBytes("12345678911"));
			t.put(put);  //修改数据可以看做是添加了数据
			System.out.println("修改数据成功。。。。");

			//删除数据
			//根据rowkey值,创建删除数据对象
			Delete del = new Delete(Bytes.toBytes("gr"));
			del.addColumn(Bytes.toBytes("info"), Bytes.toBytes("tel"));
			t.delete(del);
			System.out.println("删除数据成功。。。。");


		}
		admin.close();
		con.close();
		pool.shutdown();
	}
}
这里 是简单的插入数据、修改数据、以及删除数据。我们可以看到当插入数据时结果为:

我们修改tel之后的结果:

我们将tel修改之后,再删除这条数据,查看结果:


我们发现之前我们修改的数据不见了,变成了最开始插入的数据,这就是我们之前说的hbase是有多版本的,它可以在同一位置存放不同数据,而且我们删除并不是真的将数据删除了,而是将这条数据标记删除了。且从代码可以看出,我们的修改其实就是添加。

以上是对表的简单的增删改。接下来就是查:

package com.yc.hadoop.hbase;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值