用JAVA的API操作HBASE

本文详细介绍了如何使用HBase进行基本操作,包括创建表、删除表、插入记录、查询记录及遍历整张表。通过实例代码展示了如何配置HBase环境,实现数据的增删查改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
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;

public class HBaseApp {
	private static final String TABLE_NAME = "xxc";
	private static final String FAMILY_NAME = "family1";
	private static final String ROW_KEY = "rowkey1";

	// 创建表、删除表、插入记录、查询一条记录、遍历所有记录
	public static void main(String[] args) throws IOException {
		// 配置信息
		Configuration conf = HBaseConfiguration.create();
		// 设置HBASE在HDFS上的存储路径
		conf.set("hbase.rootdir", "hdfs://xxc:9000/hbase");
		// 使用eclipse时必须添加这个,否则无法定位 使用zookepper定位HBASE
		conf.set("hbase.zookeeper.quorum", "xxc");

		// 1.创建表、删除表使用HBaseAdmin
		HBaseAdmin hBaseAdmin = new HBaseAdmin(conf);
		// 如果表不存在则创建表
		createTable(hBaseAdmin);
		// 删除表
		// deleteTable(hBaseAdmin);

		// 2.插入记录、查询一条记录、遍历所有记录 使用HTable
		HTable hTable = new HTable(conf, TABLE_NAME);
		deleteRecord(hTable);//删除一条记录
		//putRecord(hTable);//插入一条记录
		// getRecord(hTable);//获取一条记录
	//	scanTable(hTable);//遍历整张表
		hTable.close();
	}

	private static void deleteRecord(HTable hTable) throws IOException {
		
		Delete delete = new Delete(ROW_KEY.getBytes());//参数是行键
		delete.deleteColumn(FAMILY_NAME.getBytes(), "age".getBytes());//参数是列族,列名
		hTable.delete(delete);
	}
	
	/**
	 * 遍历整张表 
	 */
	private static void scanTable(HTable hTable) throws IOException {
		Scan scan = new Scan(); 
		ResultScanner scanner = hTable.getScanner(scan);
		for (Result result : scanner) {
			byte[] value = result.getValue(FAMILY_NAME.getBytes(), "age".getBytes());//列族,列名
			System.out.println(new String(value));
		}
	}

	/**
	 * 获取一条记录
	 */
	private static void getRecord(HTable hTable) throws IOException {
		Get get = new Get(ROW_KEY.getBytes());//参数是行键
		Result result = hTable.get(get);
		byte[] value = result.getValue(FAMILY_NAME.getBytes(), "age".getBytes());//列族,列名
		System.out.println(result + "\t" + new String(value));
	}

	/**
	 * 插入一条记录
	 */
	private static void putRecord(HTable hTable) throws IOException {
		Put put = new Put(ROW_KEY.getBytes());//参数是行键
		put.add(FAMILY_NAME.getBytes(), "age".getBytes(), "20".getBytes());//设置列族,列名,值
		hTable.put(put);
	}

	/** 
	 * 删除表
	 */
	private static void deleteTable(HBaseAdmin hBaseAdmin) throws IOException {
		hBaseAdmin.disableTable(TABLE_NAME);// 删除表之前需要禁用表,否则删除失败
		hBaseAdmin.deleteTable(TABLE_NAME);
	}

	/**
	 * 添加表
	 */
	private static void createTable(HBaseAdmin hBaseAdmin) throws IOException {
		if (!hBaseAdmin.tableExists(TABLE_NAME)) {
			HTableDescriptor hd = new HTableDescriptor(TABLE_NAME);// 实参是表名称
			HColumnDescriptor family = new HColumnDescriptor(FAMILY_NAME);//创建列族 实参是列族名称 
			hd.addFamily(family);//将列族添加到表上
			hBaseAdmin.createTable(hd);
		}
	}
}

使用Java API操作HBase非常简单和方便。HBase提供了一个Java库,可以使用它来连接和与HBase进行交互。下面是使用Java API操作HBase的步骤: 1. 首先,需要导入HBaseJava库。可以在项目的构建文件(例如pom.xml)中添加HBase相关依赖项,者手动将HBase库添加到项目的类路径中。 2. 创建HBase的配置对象,并设置必要的配置参数。配置对象可以指定HBase的连接地址、端口号等信息。 3. 使用HBase的配置对象创建一个HBase的连接对象。连接对象允许与HBase进行通信。 4. 通过连接对象创建一个HBase的管理员对象。管理员对象用于对HBase的表进行管理,如创建表、删除表等操作。 5. 创建HBase表的描述符对象,并指定表的名称、列族等信息。 6. 使用管理员对象创建HBase表。可以使用表的描述符对象来定义表的结构。 7. 使用HBase表的描述符对象创建一个表对象。表对象用于与HBase的表进行交互。 8. 使用表对象执行各种操作,如插入数据、更新数据、删除数据等。可以使用行键(row key)和列族名(column family)来定位和操作特定的数据。 9. 关闭与HBase的连接,释放资源。 通过以上步骤,可以使用Java API来连接和操作HBase。在实际应用中,还可以根据具体需求来添加其他操作,如查询数据、扫描表等。使用Java API操作HBase可以灵活地控制和管理HBase中的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值