Hbase java API 的方法
使用java API方法 对hbase的操作
创建hbase表 添加数据 批量添加 查询 扫描数据
注:必须导入依赖的jar
1.使用API创建表
package com.bw.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.ZooKeeperConnectionException; import org.apache.hadoop.hbase.client.HBaseAdmin; public class HbaseOp { //创建表 public static void main(String[] args) throws Exception, ZooKeeperConnectionException, IOException { Configuration conf= HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "linux04:2181,linux05:2181,linux06:2181"); HBaseAdmin admin = new HBaseAdmin(conf);//有一个表的管理对象 DDL HTableDescriptor hd = new HTableDescriptor("Nurse");//对hbase表的描述 HColumnDescriptor hcd = new HColumnDescriptor("info");//对hbase列族的描述 hcd.setMaxVersions(3); HColumnDescriptor hcd1 = new HColumnDescriptor("address"); hcd1.setMaxVersions(3); hd.addFamily(hcd1); hd.addFamily(hcd); //判断 if(!admin.tableExists("Nurse")) { admin.createTable(hd); }else { admin.deleteTable("Nurse"); admin.createTable(hd); } System.out.println("create table finished......"); } }
2.put 添加数据
package com.bw.hbase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; public class AddData { public static void main(String[] args) throws Exception { //创建连接 Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "linux04,linux05,linux06"); HTable table = new HTable(conf, "Nurse");//配置添加的数据的表 Put put = new Put("nurse001".getBytes());//行键 put.add("info".getBytes(),"age".getBytes(),"30".getBytes());//列簇= 列= 数据 put.add("info".getBytes(),"salary".getBytes(),"15000".getBytes()); put.add("address".getBytes(),"city".getBytes(),"bj".getBytes()); table.put(put);//将数据放入 System.out.println("add data"); } }
注:去集群中查看 是否添加成功
添加之前将集群都启动
扫描表 scan 'Nurse'
3.Batch批量添加 循环添加
package com.bw.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.client.HTable; import org.apache.hadoop.hbase.client.Put; public class BatchAdd { public static void main(String[] args) throws Exception { //创建和zk的连接 Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "linux04,linux05,linux06"); HTable table = new HTable(conf,"Nurse"); List<Put> list = new ArrayList<Put>(); for(int i=1;i<100000;i++) { Put put = new Put(("Nurse0000"+i).getBytes());//创建行键 put.add("info".getBytes(),"name".getBytes(),("No"+i).getBytes());//将列族 列和数据放入 list.add(put);//将数据行键放入集合 if(i%1000==0) {//如果... table.put(list);//就将表放入集合 list.clear(); } } table.put(list); System.out.println("batch 批量"); } }
去集群查看 scan 'Nurse'
4.getData 根据行键得到结果
package com.bw.hbase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Result; public class GetData { public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum","linux04,linux05,linux06"); HTable table = new HTable(conf,"Nurse");//将查询的表名放入 Get get = new Get("Nurse000099982".getBytes());//根据行键查询 Result result = table.get(get);//根据行键得到结果 byte[] value = result.getValue("info".getBytes(), "name".getBytes()); System.out.println("查询结果 列族 和列信息:"+new String(value));//打印查询结果 String row = new String(result.getRow());//得到行键信息 System.out.println("行键:"+row); } }
5.Scan扫描数据 注: scan不加参数扫描的是所有数据 加参数是 扫描的中间的
package com.bw.hbase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; public class ScanData { public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "linux04,linux05,linux06"); HTable table = new HTable(conf,"Nurse"); //Scan sc = new Scan();//如果参数是空的 扫描所有的数据 Scan sc = new Scan("Nurse00000".getBytes(),"Nurse0000100".getBytes()); ResultScanner scanner = table.getScanner(sc); for (Result r : scanner) { System.out.println("行键row:"+new String(r.getRow()));//行键 System.out.println("查询数据的结果:"+new String(r.getValue("info".getBytes(), "name".getBytes()))); } } }
注:是按照字典排序:1 11 111 2 22 223
6.delete
package com.bw.hbase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.HTable; public class DeleteTest { public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "linux04,linux05,linux06"); HTable table = new HTable(conf,"Nurse"); Delete delete = new Delete("Nurse00001".getBytes());//根据行键删除 删除行键的东西 table.delete(delete); System.out.println("删除成功"); } }
作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。