利用HBase的JavaAPI编程[四]

Tags: , , ,
Comments: No Comments
Published on: 2012 年 06 月 06 日


本篇主要写了hbase程序利用java API对hbase进行建数据表、插入数据、查询数据和删除数据表的几个简单操作,程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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.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;
import org.apache.hadoop.hbase.util.Bytes;
 
public class test {
	public static void main(String[] args) throws IOException {
		Configuration config = HBaseConfiguration.create();
 
		HBaseAdmin admin = new HBaseAdmin(config);
		HTableDescriptor htd = new HTableDescriptor("test");
		HColumnDescriptor hcd = new HColumnDescriptor("data");
		htd.addFamily(hcd);
		admin.createTable(htd);
		byte[] tablename = htd.getName();
		HTableDescriptor[] tables = admin.listTables();
		if (tables.length != 1 && Bytes.equals(tablename, tables[0].getName())) {
			throw new IOException("Faild create of table");
		}
 
		HTable table=new HTable(config,tablename);
		byte[] row1 = Bytes.toBytes("row1");
		Put p1=new Put(row1);
		byte[] databytes = Bytes.toBytes("data");
		p1.add(databytes, Bytes.toBytes("1"), Bytes.toBytes("value1"));
		table.put(p1);
 
		Get g = new Get(row1);
		Result result = table.get(g);
		System.out.println("Get: "+result);
		Scan scan=new Scan();
		ResultScanner scanner=table.getScanner(scan);
 
		try{
			for(Result scannerResult: scanner){
				System.out.println("Scan: "+scannerResult);
			}
		}finally{scanner.close();}
 
		admin.disableTable(tablename);
		admin.deleteTable(tablename);
	}
}

程序中首先创建一个Configuration实例,这个类会读入程序classpath下hbase-site.xml和hbase-default.xml文件中的hbase配置信息(看到这段我以为需要把这两个文件放入classpath路径下才可以,后来经过验证完全没必要,使用hbase classname命令的情况下)。使用Configuration实例创建HBaseAdmin和HTable实例。HBaseAdmin用于管理HBase集群,添加和丢弃表。HTable则用于访问指定表。

使用HBaseAdmin实例创建一个名为test的只有一个列族data的表,然后的判断是测试是否创建成功。

使用HTable实例对表进行操作,使用Put对象把一个单元格的value1值放入row1的行的名为data:1的列上。列名通过两部分指定,列名(Bytes.toBytes("data"))和修饰词(Bytes.toBytes("1"))。。然后使用put方法插入Put对象即可。取值也很简单,不再说明。

删除一个表前需要先禁用表,这就是最后两句的作用。

我猜你可能也喜欢:

No Comments - Leave a comment

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


Welcome , today is 星期六, 2017 年 10 月 21 日