HBase中没有库的概念
HBase lib目录下所有JAR包复制到项目中,Hbase 版本0.98.5
package com.zxing.imgQRCode;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
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.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HConnection;
import org.apache.hadoop.hbase.client.HConnectionManager;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
public class HbaseConnection {
private String rootDir;
private String zkServer;
private String port;
private Configuration conf;
private HConnection hConn=null;
public HbaseConnection(String rootDir, String zkServer, String port) {
super();
this.rootDir = rootDir;
this.zkServer = zkServer;
this.port = port;
conf=HBaseConfiguration.create();
conf.set("hbase.rootdir", rootDir);
conf.set("hbase.zookeeper.quorum ", zkServer);
conf.set("hbase.zookeeper.property.clientPort", port);
try {
hConn=HConnectionManager.createConnection(conf);
} catch (IOException e) {
e.printStackTrace();
}
}
//创建表
public void crateTable(String tableName,List<String> cols){
try {
HBaseAdmin admin=new HBaseAdmin(conf);
if(admin.tableExists(tableName))
throw new IOException("table exists");
else{
HTableDescriptor tableDesc=new HTableDescriptor(tableName);
for(String col:cols){
HColumnDescriptor colDesc=new HColumnDescriptor(col);
colDesc.setCompressionType(Algorithm.GZ);
colDesc.setDataBlockEncoding(DataBlockEncoding.DIFF);
tableDesc.addFamily(colDesc);
}
admin.createTable(tableDesc);
}
} catch (MasterNotRunningException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ZooKeeperConnectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//插入数据
public void saveData(String tableName,List<Put> puts){
try {
HTableInterface table =hConn.getTable(tableName);
table.put(puts);
table.setAutoFlush(false);
table.flushCommits();
} catch (IOException e) {
e.printStackTrace();
}
}
//得到数据
public Result getData(String tableName,String rowkey){
try {
HTableInterface table =hConn.getTable(tableName);
Get get=new Get(rowkey.getBytes());
return table.get(get);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//输出result结果
public void format(Result result){
String rowkey=result.getRow().toString();
KeyValue[] kvs=result.raw();
for (KeyValue kv:kvs){
String family= kv.getFamily().toString();
String qualifier= kv.getQualifier().toString();
System.out.println("rowkey->"+rowkey+"family->"+family+"qualifier->"+qualifier);
}
}
//全表扫描
public void hbaseScan(String tableName){
Scan scan=new Scan();//扫描器
scan.setCaching(1000);//缓存1000条数据,一次读取1000条
try {
HTableInterface table =hConn.getTable(tableName);
ResultScanner scanner=table.getScanner(scan);//返回迭代器
for(Result res:scanner){
format(res);
}
} catch (IOException e) {
e.printStackTrace();
}
}
//比较过滤器
public void filterTest(String tableName){
Scan scan=new Scan();//扫描器
scan.setCaching(1000);//缓存1000条数据,一次读取1000条
RowFilter filter =new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator("Jack".getBytes()));
RowFilter filter1 =new RowFilter(CompareFilter.CompareOp.EQUAL,new RegexStringComparator("J\\w+"));
scan.setFilter(filter);
try {
HTableInterface table =hConn.getTable(tableName);
ResultScanner scanner=table.getScanner(scan);//返回迭代器
for(Result res:scanner){
format(res);
}
} catch (IOException e) {
e.printStackTrace();
}
}
//PageFilter分页
public void pageFilterTest(String tableName){
PageFilter filter = new PageFilter(4);
byte[] lastRow=null;
int pageCount=0; //记录第几页
try {
HTableInterface table =hConn.getTable(tableName);
while(++pageCount>0){
System.out.println("pageCount = "+ pageCount);
Scan scan=new Scan();
scan.setFilter(filter);
if(lastRow!=null){
scan.setStartRow(lastRow);
}
ResultScanner scanner=table.getScanner(scan);
int count=0;//计数器
for(Result res:scanner){
lastRow=res.getRow();
if(++count>3)
break;
format(res);
if(count<3){
break;
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String rootDir="hdfs://ns1/hbase";
String zkServer="10.128.129.230";//集群内网IP
String port="2181";
//
HbaseConnection conn=new HbaseConnection(rootDir, zkServer, port);
List<String> cols=new LinkedList<String>();
cols.add("basicInfo");
cols.add("moreInfo");
conn.crateTable("students", cols);
//
List<Put> puts=new LinkedList<Put>();
Put put1=new Put("Tom".getBytes());//rowkey
put1.add("basicInfo".getBytes(), "age".getBytes(), "27".getBytes());
put1.add("moreInfo".getBytes(), "tel".getBytes(), "110".getBytes());
Put put2=new Put("Jim".getBytes());
put2.add("basicInfo".getBytes(), "age".getBytes(), "28".getBytes());
put2.add("moreInfo".getBytes(), "tel".getBytes(), "111".getBytes());
puts.add(put1);
puts.add(put2);
conn.saveData("students", puts);
//
Result result= conn.getData("students", "Tom");
conn.format(result);
//
conn.hbaseScan("students");
}
}本文出自 “一无所有 QQ:934033381” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1698822
原文:http://tianxingzhe.blog.51cto.com/3390077/1698822