千家信息网

java操作hbase api

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,需要引入的jar包(这里的jar包括hbase,hive的UDF,hive的jdbc连接)java源码package com.hbase.jdbc;import java.util.ArrayList
千家信息网最后更新 2024年11月27日java操作hbase api
  1. 需要引入的jar包(这里的jar包括hbase,hive的UDF,hive的jdbc连接)

  2. java源码

package com.hbase.jdbc;import java.util.ArrayList;import java.util.List;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.TableName;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.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.filter.CompareFilter.CompareOp;import org.apache.hadoop.hbase.filter.Filter;import org.apache.hadoop.hbase.filter.FilterList;import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;import org.apache.hadoop.hbase.util.Bytes;public class HBaseOperate {    public static Configuration conf;    /*     * hbase的基本设置      */    static{        conf = HBaseConfiguration.create();        conf.set("hbase.master", "192.168.1.100:600000");          conf.set("hbase.zookeeper.quorum", "192.168.192.137");     }        public static void main(String args[]) throws Exception{        String[] cols = {"age","sex","address"};        String tableName = "userInfo3";//        new HBaseOperate().createTable(tableName, cols);        String[] columnValue = {"北京","1","16",};        String[] column = {"baseAddress","baseSex","baseAge"};//        new HBaseOperate().listTable();//        new HBaseOperate().insertData(tableName,"doubi", column, columnValue);//        new HBaseOperate().dropTable(tableName);//        new HBaseOperate().getRow(tableName, "wj");//        new HBaseOperate().deleteRow(tableName, "wj");//        new HBaseOperate().getAllRow(tableName);//        new HBaseOperate().getRowByCondition(tableName);        new HBaseOperate().getRowByManyCondition(tableName);    }        /**     * 创建表     */    public void createTable(String tableName,String cols[]) throws Exception{        HBaseAdmin ha = new HBaseAdmin(conf);        if(ha.tableExists(tableName)){            System.out.println("表已经存在");        }else{            HTableDescriptor table = new HTableDescriptor(TableName.valueOf(tableName));            for(String c: cols){                HColumnDescriptor col=new HColumnDescriptor(c);//列簇名                table.addFamily(col);            }                        ha.createTable(table);            ha.close();            System.out.println("创建表成功!");        }    }        /**     * 删除表      */    public void dropTable(String tableName) throws Exception{        System.out.println("start drop table!");        HBaseAdmin ha = new HBaseAdmin(conf);        ha.disableTable(tableName);        ha.deleteTable(tableName);        System.out.println("drop table success!");    }        /**     * 查看所有表      */    public void listTable() throws Exception{        HBaseAdmin ha = new HBaseAdmin(conf);        TableName[] tableNames = ha.listTableNames();        for(int i = 0; i < tableNames.length; i ++){            System.out.println(tableNames[i].getNameAsString());        }    }        /**     * 插入数据     */    public void insertData(String tableName, String rowKey, String[] column,                             String[] columnValue) throws Exception{        System.out.println("start insert table!");        HTable table = new HTable(conf, tableName);        HTableDescriptor hd = table.getTableDescriptor();        HColumnDescriptor[] hcds = hd.getColumnFamilies();//最后一列开始        Put put = new Put(rowKey.getBytes());                for(int i = 0; i < hcds.length; i ++){            HColumnDescriptor hcd = hcds[i];            put.add(hcd.getName(), column[i].getBytes(), columnValue[i].getBytes());            //family column value        }                table.put(put);        System.out.println("end insert table!");    }        /**     * 获取一行数据      */    public void getRow(String tableName, String key) throws Exception{        System.out.println("start get row!");        HTable table = new HTable(conf, tableName);        Get get = new Get(key.getBytes());                Result result = table.get(get);        for(Cell cell : result.rawCells()){            System.out.println("row family++++++ " +                 new String(CellUtil.cloneFamily(cell)) +                 "  row column++++++ " + new String(CellUtil.cloneQualifier(cell)) +                 "   row value ++++++" + new String(CellUtil.cloneValue(cell)));        }                System.out.println("get row end!");    }        /**     * 删除一行数据      */    public void deleteRow(String tableName, String key) throws Exception{        System.out.println("delete row start!");        HTable table =new HTable(conf, tableName);        Delete d1 = new Delete(key.getBytes());        table.delete(d1);        System.out.println("delete row end!");    }        /**     * 获取表所有数据     */    public void getAllRow(String tableName) throws Exception{        System.out.println("get all row start!");        HTable table = new HTable(conf, tableName);        Scan s = new Scan();        ResultScanner rs = table.getScanner(s);        for(Result result : rs){            for(Cell cell : result.rawCells()){                System.out.println("row key++++++" + new String(CellUtil.cloneRow(cell)) +                 " row family++++++ " + new String(CellUtil.cloneFamily(cell)) +                  "   row column++++++ " + new String(CellUtil.cloneQualifier(cell)) +                  "   row value ++++++" + new String(CellUtil.cloneValue(cell)));            }        }        System.out.println("get all row end");    }        /**     * 根据条件查询记录     */    public void getRowByCondition(String tableName) throws Exception{        System.out.println("begin query!");        HTable table = new HTable(conf, tableName);        Filter filter = new SingleColumnValueFilter(Bytes.toBytes("sex"), Bytes.toBytes("baseAge"), CompareOp.EQUAL, Bytes.toBytes("100")); //family column 比较符号 比较值        Scan s = new Scan();          s.setFilter(filter);                  ResultScanner rs = table.getScanner(s);                  for(Result result : rs){            for(Cell cell : result.rawCells()){                System.out.println("row key++++++" + new String(CellUtil.cloneRow(cell)) +                 " row family++++++ " + new String(CellUtil.cloneFamily(cell)) +                 "   row column++++++ " + new String(CellUtil.cloneQualifier(cell)) +                 "   row value ++++++" + new String(CellUtil.cloneValue(cell)));            }        }         System.out.println("end query!");    }        /**     * 多条件查询     */    public void getRowByManyCondition(String tableName) throws Exception{        System.out.println("begin query!");        HTable table = new HTable(conf, tableName);        Filter filterSex = new SingleColumnValueFilter(Bytes.toBytes("sex"),             Bytes.toBytes("baseAge"), CompareOp.EQUAL, Bytes.toBytes("16"));             //family column 比较符号 比较值        Filter filterAge = new SingleColumnValueFilter(Bytes.toBytes("age"),             Bytes.toBytes("baseSex"), CompareOp.EQUAL, Bytes.toBytes("1"));             //family column 比较符号 比较值                List filterList = new ArrayList();        filterList.add(filterAge);        filterList.add(filterSex);                Scan s = new Scan();          FilterList filterListS = new FilterList(filterList);          s.setFilter(filterListS);                //可以设置查询结果的开始 和 结束位置(针对的是key值)        s.setStartRow("wj".getBytes());        s.setStopRow("wj".getBytes());                ResultScanner rs = table.getScanner(s);          for(Result result : rs){            for(Cell cell : result.rawCells()){                System.out.println("row key++++++" + new String(CellUtil.cloneRow(cell)) +                 " row family++++++ " + new String(CellUtil.cloneFamily(cell)) +                  "   row column++++++ " + new String(CellUtil.cloneQualifier(cell)) +                  "   row value ++++++" + new String(CellUtil.cloneValue(cell)));            }        }                 System.out.println("end query!");    }}
0