HBase的API接口封装及调用

前提

1).远程的Hadoop和Hbase已经启动

2).引入hbase/lib下所有jar文件

1.HBaseUtil.java

package cn.netcenter.hbase;
import java.io.IOException;
import java.util.ArrayList;

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.KeyValue;
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 HBaseUtil {
	private static HBaseConfiguration conf = null;

	static {
		conf = new HBaseConfiguration();
		//conf.set("hbase.master", "10.3.61.141:60000");
		//conf.set("hbase.zookeeper.quorum", "hadoop141,hadoop142,hadoop143,hadoop144");
		//conf.set("hbase.master.port", "60000");
		conf.addResource("hbase-site.xml");
	}

	// add
	public void createTable(String tableName, String[] cfs) throws IOException {
		HBaseAdmin admin = new HBaseAdmin(conf);
		if (admin.tableExists(tableName)) {
			System.out.println("表已经存在了");
		} else {
			HTableDescriptor tableDesc = new HTableDescriptor(tableName);//表描述
			for (int i = 0; i < cfs.length; i++) {
				tableDesc.addFamily(new HColumnDescriptor(cfs[i]));//列族
			}
			admin.createTable(tableDesc);
			System.out.println("表创建成功!");
		}
	}

	// delete table
	public void deleteTable(String tableName) throws IOException {
		try {
			HBaseAdmin admin = new HBaseAdmin(conf);
			admin.disableTable(tableName);
			admin.deleteTable(tableName);
			System.out.println("删除表成功");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void writeRow(String tableName, String[] cfs) {
		try {
			HTable table = new HTable(conf, tableName);
			Put put = new Put(org.apache.hadoop.hbase.util.Bytes.toBytes(cfs[0]));
			put.add(org.apache.hadoop.hbase.util.Bytes.toBytes(cfs[1]),
						org.apache.hadoop.hbase.util.Bytes.toBytes(cfs[2]),
						org.apache.hadoop.hbase.util.Bytes.toBytes(cfs[3]));
			table.put(put);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	// delete value
	public void deleteRow(String tableName, String rowKey) throws IOException {
		HTable table = new HTable(conf, tableName);
		java.util.List<Delete> list = new ArrayList<Delete>();
		Delete dl = new Delete(rowKey.getBytes());
		list.add(dl);
		table.delete(list);
		System.out.println("删除成功!");
	}

	public void selectRow(String tableName, String rowKey) throws IOException {
		HTable table = new HTable(conf, tableName);
		Get g = new Get(rowKey.getBytes());
		Result rs = table.get(g);
		for (KeyValue kv : rs.raw()) {
			System.out.println(new String(kv.getRow()) + " ");
			System.out.println(new String(kv.getFamily()) + ":");
			System.out.println(new String(kv.getQualifier()) + " ");
			System.out.println(kv.getTimestamp() + " ");
			System.out.println(new String(kv.getValue()) + " ");
		}
	}

	public void scaner(String tableName) {
		try {
			HTable table = new HTable(conf, tableName);
			Scan scan = new Scan();
			ResultScanner rs = table.getScanner(scan);

			for (Result r : rs) {
				KeyValue[] kv = r.raw();
				for (int i = 0; i < kv.length; i++) {
					System.out.print(new String(kv[i].getRow()) + " ");
					System.out.print(new String(kv[i].getFamily()) + ": ");
					System.out.print(new String(kv[i].getQualifier()) + " ");
					System.out.print(kv[i].getTimestamp() + " ");
					System.out.println(new String(kv[i].getValue()));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

2.HBaseTest.java

package cn.netcenter.test;

import java.io.IOException;

import cn.netcenter.hbase.HBaseUtil;

public class HBaseTest {

	public static void main(String[] args) throws IOException {
		//createTable();
		getRow();
		//put();
		
	}
	
	public static void createTable() throws IOException{
		HBaseUtil util=new HBaseUtil();
		String[] cfs={"grade","course"};
		util.createTable("score", cfs);
	}
	
	public static void put() throws IOException{
		HBaseUtil util=new HBaseUtil();
		//String[] cfs={"zkb","grade","","5"};
		String[] cfs={"baoniu","course","art","80"};
		
		util.writeRow("scores", cfs);
		
	}
	
	public static void scaner()throws IOException{
		HBaseUtil util=new HBaseUtil();
		util.scaner("bio");
	}
	

	public static void getRow()throws IOException{
		HBaseUtil util=new HBaseUtil();
		util.selectRow("scores", "baoniu");
	}
	public static void deleteTable()throws IOException{
		HBaseUtil util=new HBaseUtil();
		util.deleteTable("score");
	}
}

3.hbase-site.xml 放置于src目录下

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://hadoop141:54310/hbase</value>
</property>

<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>

<property>
<name>hbase.master</name> 
<value>hdfs://hadoop141:60000</value> 
</property> 

<property>
    <name>hbase.master.port</name>
    <value>60000</value>
  </property>

<property>
      <name>hbase.zookeeper.quorum</name>
      <value>hadoop141,hadoop142,hadoop143,hadoop144</value>
</property>
</configuration>

猜你喜欢

转载自lijun2087.iteye.com/blog/1921006