HBase API相关操作

HBase自2.1.0版本之后,API的使用和以前存在差异,关于日常API,这里做简单汇总,后期还会继续加入。

声明:作者在这里使用的HBase版本为2.1.2,对应的jar包是2.1.2版本,在这里直接将HBase中lib文件下所有的jar包全部导入。

导入的jar包

     

import java.util.Iterator;
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.ColumnFamilyDescriptorBuilder;
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.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.util.Bytes;

创建表

    

public static void createTable() throws Exception {
		
		Configuration conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");//Hbase连接设置
		Connection conn = ConnectionFactory.createConnection(conf);
		Admin admin = conn.getAdmin();
		// 创建对应的表名
		TableName tableName = TableName.valueOf("testtable2");
		TableDescriptorBuilder table = TableDescriptorBuilder.newBuilder(tableName);
		// 创建列族
		ColumnFamilyDescriptorBuilder colfam1 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("colfam1"));
		colfam1.setMaxVersions(3);// 设置数据版本
		table.setColumnFamily(colfam1.build());// 将列族添加到表中
		admin.createTable(table.build());
		admin.close();
		conn.close();
	}

数据存放

public static void putData() throws Exception {
		Configuration conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
		Connection conn = ConnectionFactory.createConnection(conf);
		// 获取表名
		TableName tableName = TableName.valueOf(Bytes.toBytes("testtable2"));
		Table table = conn.getTable(tableName);
		Put put = new Put(Bytes.toBytes("row1"));//设置操作的行键
		//设置操作的列族  列  列值
		put.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("name"), Bytes.toBytes("张三"));
		table.put(put);
		table.close();
		conn.close();
	}

 数据获取

public static void getData() throws Exception {
		//配置并创建连接
		Configuration conf = HBaseConfiguration.create();
	    conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
		Connection conn = ConnectionFactory.createConnection(conf);
		//获取到操作的hbase表名
		TableName tableName = TableName.valueOf("testtable2");
		Table table = conn.getTable(tableName);
		//设置需要获取数据的行 列族 列
		Get row = new Get(Bytes.toBytes("row1"));
		Result result = table.get(row);
		//对数据进行处理并输出
		byte[] value = result.getValue(Bytes.toBytes("colfam1"), Bytes.toBytes("name"));
		System.out.println("输出的结果为:"+Bytes.toString(value));
	}

       数据集获取

public static void getDates() throws Exception {
		Configuration conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
		Connection conn = ConnectionFactory.createConnection(conf);
		TableName tableName = TableName.valueOf(Bytes.toBytes("testtable2"));
		Table table = conn.getTable(tableName);
		Scan scan=new Scan(Bytes.toBytes("row1"));
		ResultScanner scanner = table.getScanner(scan);
		Iterator<Result> it = scanner.iterator();
		while(it.hasNext()) {
			Result result = it.next();
			byte[] value = result.getValue(Bytes.toBytes("colfam1"), Bytes.toBytes("name"));
		    String str=Bytes.toString(value);
		    System.out.println("str:"+str);
		}
		table.close();
		conn.close();
	}

数据删除

public static void deleteRow() throws Exception {
		Configuration conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
		Connection conn = ConnectionFactory.createConnection(conf);
		Table table = conn.getTable(TableName.valueOf(Bytes.toBytes("testtable2")));
		Delete delete =new Delete(Bytes.toBytes("row1"));
		table.delete(delete);
		table.close();
	}

删除表操作

public static void deleteTable()  throws Exception{
		Configuration conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "bigdate01:2181,bigdate02:2181,bigdate03:2181");
	    Connection conn = ConnectionFactory.createConnection(conf);
	    TableName tableName = TableName.valueOf(Bytes.toBytes("testtable2"));
	    Table table = conn.getTable(tableName);
	    Admin admin = conn.getAdmin();
	    admin.disableTable(tableName);//在删除表之前,请先将表设置为不可用
	    admin.deleteTable(tableName);
	    admin.close();
	    conn.close();
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VogtZhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值