用JAVA的API操作HBASE

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);
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值