这里贴一下自己写的调用hbase的java api程序
package cn.itcast_01_hbase; import java.util.ArrayList; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MasterNotRunningException; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.ZooKeeperConnectionException; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; 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.HConnection; import org.apache.hadoop.hbase.client.HConnectionManager; 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.client.Table; import org.apache.hadoop.hbase.filter.ColumnPrefixFilter; import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.FilterList; import org.apache.hadoop.hbase.filter.FilterList.Operator; import org.apache.hadoop.hbase.filter.RegexStringComparator; import org.apache.hadoop.hbase.filter.RowFilter; import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import org.apache.hadoop.hbase.util.Bytes; import org.junit.After; import org.junit.Before; import org.junit.Test; public class HbaseTest { /** * 配置ss */ static Configuration config = null; static private Connection connection = null; static private Table table = null; public static void init() throws Exception { config = HBaseConfiguration.create();// 配置 config.set("hbase.zookeeper.quorum", "hadoop01,hadoop02");// zookeeper地址 config.set("hbase.zookeeper.property.clientPort", "2181");// zookeeper端口 connection = ConnectionFactory.createConnection(config); table = connection.getTable(TableName.valueOf("user")); } /** * 创建一个表 * * @throws Exception */ public static void main(String[] args) throws Exception { init(); // createTable(); // deleteTable(); // insertData(); // uodateData(); deleteDate(); // queryData(); close(); } public static void createTable() throws Exception { // 创建表管理类 HBaseAdmin admin = new HBaseAdmin(config); // hbase表管理 // 创建表描述类 TableName tableName = TableName.valueOf("test3"); // 表名称 HTableDescriptor desc = new HTableDescriptor(tableName); // 创建列族的描述类 HColumnDescriptor family = new HColumnDescriptor("info"); // 列族 // 将列族添加到表中 desc.addFamily(family); HColumnDescriptor family2 = new HColumnDescriptor("info2"); // 列族 // 将列族添加到表中 desc.addFamily(family2); // 创建表 admin.createTable(desc); // 创建表 // Table table1 = connection.getTable(TableName.valueOf("test3")); // Put put = new Put(Bytes.toBytes("second")); // put.add(Bytes.toBytes("mesg1"), Bytes.toBytes("name"),Bytes.toBytes("zhangsanfeng")); // table1.put(put); } @SuppressWarnings("deprecation") public static void deleteTable() throws MasterNotRunningException, ZooKeeperConnectionException, Exception { HBaseAdmin admin = new HBaseAdmin(config); admin.disableTable("test3"); admin.deleteTable("test3"); admin.close(); } // /** // * 向hbase中增加数据 // * // * @throws Exception // */ @SuppressWarnings({ "deprecation", "resource" }) public static void insertData() throws Exception { Put put = new Put(Bytes.toBytes("second")); put.add(Bytes.toBytes("info1"), Bytes.toBytes("name"),Bytes.toBytes("zhangsanfeng")); put.add(Bytes.toBytes("info2"), Bytes.toBytes("age"),Bytes.toBytes(12)); table.put(put); //// table.setAutoFlushTo(false); //// table.setWriteBufferSize(534534534); // ArrayList<Put> arrayList = new ArrayList<Put>(); // for (int i = 21; i < 50; i++) { // Put put = new Put(Bytes.toBytes("1234"+i)); //hbase 提供了一个工具Bytes // put.add(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("wangwu"+i)); // put.add(Bytes.toBytes("info"), Bytes.toBytes("password"), Bytes.toBytes(1234+i)); // arrayList.add(put); // } // // //插入数据 // table.put(arrayList); // //提交 // table.flushCommits(); } // // /** // * 修改数据 // * // * @throws Exception // */ public static void uodateData() throws Exception { Put put = new Put(Bytes.toBytes("second")); put.add(Bytes.toBytes("info1"), Bytes.toBytes("name"), Bytes.toBytes("lisi1234")); // put.add(Bytes.toBytes("info"), Bytes.toBytes("password"), Bytes.toBytes(1234)); //插入数据 table.put(put); //提交 } // // /** // * 删除数据 // * // * @throws Exception // */ public static void deleteDate() throws Exception { Delete delete = new Delete(Bytes.toBytes("first")); delete.addColumn(Bytes.toBytes("info1"), Bytes.toBytes("name")); table.delete(delete); } // // /** // * 单条查询 // * // * @throws Exception // */ public static void queryData() throws Exception { Get get = new Get(Bytes.toBytes("second")); Result result = table.get(get); System.out.println("-----------------------------------------"); System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info1"), Bytes.toBytes("name")))); // System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("namessss")))); // System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("sex")))); } // /** // * 全表扫描 // * // * @throws Exception // */ public void scanData() throws Exception { Scan scan = new Scan(); //scan.addFamily(Bytes.toBytes("info")); //scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("password")); scan.setStartRow(Bytes.toBytes("wangsf_0")); scan.setStopRow(Bytes.toBytes("wangwu")); ResultScanner scanner = table.getScanner(scan); for (Result result : scanner) { System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password")))); System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")))); //System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("password")))); //System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name")))); } } // /** // * 全表扫描的过滤器 // * 列值过滤器 // * // * @throws Exception // */ // @Test // public void scanDataByFilter1() throws Exception { // // // 创建全表扫描的scan // Scan scan = new Scan(); // //过滤器:列值过滤器 // SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("info"), // Bytes.toBytes("name"), CompareFilter.CompareOp.EQUAL, // Bytes.toBytes("zhangsan2")); // // 设置过滤器 // scan.setFilter(filter); // // // 打印结果集 // ResultScanner scanner = table.getScanner(scan); // for (Result result : scanner) { // System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password")))); // System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")))); // //System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("password")))); // //System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name")))); // } // // } // /** // * rowkey过滤器 // * @throws Exception // */ // @Test // public void scanDataByFilter2() throws Exception { // // // 创建全表扫描的scan // Scan scan = new Scan(); // //匹配rowkey以wangsenfeng开头的 // RowFilter filter = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator("^12341")); // // 设置过滤器 // scan.setFilter(filter); // // 打印结果集 // ResultScanner scanner = table.getScanner(scan); // for (Result result : scanner) { // System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("password")))); // System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")))); // //System.out.println(Bytes.toInt(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("password")))); // //System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name")))); // } // // // } // // /** // * 匹配列名前缀 // * @throws Exception // */ // @Test // public void scanDataByFilter3() throws Exception { // // // 创建全表扫描的scan // Scan scan = new Scan(); // //匹配rowkey以wangsenfeng开头的 // ColumnPrefixFilter filter = new ColumnPrefixFilter(Bytes.toBytes("na")); // // 设置过滤器 // scan.setFilter(filter); // // 打印结果集 // ResultScanner scanner = table.getScanner(scan); // for (Result result : scanner) { // System.out.println("rowkey:" + Bytes.toString(result.getRow())); // System.out.println("info:name:" // + Bytes.toString(result.getValue(Bytes.toBytes("info"), // Bytes.toBytes("name")))); // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info"), Bytes.toBytes("age")) != null) { // System.out.println("info:age:" // + Bytes.toInt(result.getValue(Bytes.toBytes("info"), // Bytes.toBytes("age")))); // } // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info"), Bytes.toBytes("sex")) != null) { // System.out.println("infi:sex:" // + Bytes.toInt(result.getValue(Bytes.toBytes("info"), // Bytes.toBytes("sex")))); // } // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name")) != null) { // System.out // .println("info2:name:" // + Bytes.toString(result.getValue( // Bytes.toBytes("info2"), // Bytes.toBytes("name")))); // } // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("age")) != null) { // System.out.println("info2:age:" // + Bytes.toInt(result.getValue(Bytes.toBytes("info2"), // Bytes.toBytes("age")))); // } // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("sex")) != null) { // System.out.println("info2:sex:" // + Bytes.toInt(result.getValue(Bytes.toBytes("info2"), // Bytes.toBytes("sex")))); // } // } // // } // /** // * 过滤器集合 // * @throws Exception // */ // @Test // public void scanDataByFilter4() throws Exception { // // // 创建全表扫描的scan // Scan scan = new Scan(); // //过滤器集合:MUST_PASS_ALL(and),MUST_PASS_ONE(or) // FilterList filterList = new FilterList(Operator.MUST_PASS_ONE); // //匹配rowkey以wangsenfeng开头的 // RowFilter filter = new RowFilter(CompareFilter.CompareOp.EQUAL, new RegexStringComparator("^wangsenfeng")); // //匹配name的值等于wangsenfeng // SingleColumnValueFilter filter2 = new SingleColumnValueFilter(Bytes.toBytes("info"), // Bytes.toBytes("name"), CompareFilter.CompareOp.EQUAL, // Bytes.toBytes("zhangsan")); // filterList.addFilter(filter); // filterList.addFilter(filter2); // // 设置过滤器 // scan.setFilter(filterList); // // 打印结果集 // ResultScanner scanner = table.getScanner(scan); // for (Result result : scanner) { // System.out.println("rowkey:" + Bytes.toString(result.getRow())); // System.out.println("info:name:" // + Bytes.toString(result.getValue(Bytes.toBytes("info"), // Bytes.toBytes("name")))); // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info"), Bytes.toBytes("age")) != null) { // System.out.println("info:age:" // + Bytes.toInt(result.getValue(Bytes.toBytes("info"), // Bytes.toBytes("age")))); // } // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info"), Bytes.toBytes("sex")) != null) { // System.out.println("infi:sex:" // + Bytes.toInt(result.getValue(Bytes.toBytes("info"), // Bytes.toBytes("sex")))); // } // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("name")) != null) { // System.out // .println("info2:name:" // + Bytes.toString(result.getValue( // Bytes.toBytes("info2"), // Bytes.toBytes("name")))); // } // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("age")) != null) { // System.out.println("info2:age:" // + Bytes.toInt(result.getValue(Bytes.toBytes("info2"), // Bytes.toBytes("age")))); // } // // 判断取出来的值是否为空 // if (result.getValue(Bytes.toBytes("info2"), Bytes.toBytes("sex")) != null) { // System.out.println("info2:sex:" // + Bytes.toInt(result.getValue(Bytes.toBytes("info2"), // Bytes.toBytes("sex")))); // } // } // // } // public static void close() throws Exception { table.close(); connection.close(); } }