1、搭建环境
复制linux下已配置搭建好的hbase目录进入windows里面,当然使用linux开发的可以不用。
新建java工程,将hbase目录下的jar和lib下的jar包添加到类路径下。
同时增加外部Class Folder将hbase的conf目录增加进来 多数连接操作就是因为没有配置这个部分。
2、OK
编辑代码,自己试着运行运行吧。
package hbase;
import java.util.ArrayList;
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.client.Delete;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.HTablePool;
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 HbaseDemo {
public static Configuration conf;
static{
conf = HBaseConfiguration.create();
}
public static void main(String[] args) throws Exception {
createTable("test1");
}
/**
* 查询所有数据
* @param tableName
* @throws Exception
*/
public static void queryAll(String tableName) throws Exception{
System.out.println("query all start....");
HTablePool pool = new HTablePool(conf, 1000);
HTableInterface table = pool.getTable(tableName);
ResultScanner scanner = table.getScanner(new Scan());
for (Result result : scanner) {
System.out.println("rowkey:\t"+new String(result.getRow()));
for (org.apache.hadoop.hbase.KeyValue kv : result.raw()) {
System.out.println("column:\t"+new String(kv.getFamily())+":"+new String(kv.getValue()));
}
}
}
/**
* 删除行
* @param tableName
* @param rowkey
* @throws Exception
*/
public static void deleteRow(String tableName,String rowkey) throws Exception{
HTable table = new HTable(conf, tableName);
List list = new ArrayList();
Delete d1 = new Delete(rowkey.getBytes());
list.add(d1);
table.delete(list);
System.out.println("delete row end ....");
}
/**
* 删除表
* @param tableName
* @throws Exception
*/
public static void dropTable(String tableName) throws Exception{
HBaseAdmin admin = new HBaseAdmin(conf);
admin.disableTable(tableName);
admin.deleteTable(tableName);
admin.close();
}
/**
* 插入数据
* @param tableName
* @throws Exception
*/
public static void insertData(String tableName) throws Exception{
System.out.println("insert data start.....");
HTablePool pool = new HTablePool(conf, 1000);
HTableInterface table = pool.getTable(tableName);
Put put = new Put("row001".getBytes());
put.add("tf1".getBytes(), null, "aaa".getBytes());
put.add("tf2".getBytes(), null, "aaa".getBytes());
put.add("tf3".getBytes(), null, "aaa".getBytes());
table.put(put);
System.out.println("insert data end.....");
}
/**
* 创建表
* @param tableName
* @throws Exception
*/
public static void createTable(String tableName) throws Exception{
System.out.println("create table ....");
HBaseAdmin admin = new HBaseAdmin(conf);
// 如果存在要创建的表,那么先删除,再创建
if(admin.tableExists(tableName)){
admin.disableTable(tableName);
admin.deleteTable(tableName);
System.out.println(tableName+" table exists,delete ....");
}
HTableDescriptor descriptor = new HTableDescriptor(tableName);
descriptor.addFamily(new HColumnDescriptor("tf1"));
descriptor.addFamily(new HColumnDescriptor("tf2"));
descriptor.addFamily(new HColumnDescriptor("tf3"));
admin.createTable(descriptor);
admin.close();
System.out.println("create table finished....");
}
}
3、linux hbase shell
>list
列出所有的table
>status
>version
>scan ‘tableName‘
浏览数据
》describe ‘tableName‘
>descrive extended ‘tableName‘
......................
参考:http://javacrazyer.iteye.com/blog/1186881
原文:http://www.cnblogs.com/jsunday/p/3867920.html