1.准备工作

  需要将Linux系统下的hbase-site.xml文件和hdfs-site.xml文件放置在项目的resources的路径下;

  

2.导入依赖

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-client</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-server</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-common</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <version>2.5.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>2.5.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>2.5.1</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.12</version>
    </dependency>

  </dependencies>

3.编写开关连接的方法

    static Configuration configuration;
    static Connection connection;
    static Admin admin;
    
    //初始化核心对象的方法
    public static void init() throws IOException {
        configuration= HBaseConfiguration.create();
        connection= ConnectionFactory.createConnection(configuration);
        admin=connection.getAdmin();
    }
    
    //关闭核心对象的方法
    public static void close() throws IOException {
        if (admin!=null){
            admin.close();
        }
        if (connection!=null){
            connection.close();
        }
    }

4.创建数据表

    //创建数据表
    public static void createTable() throws IOException {
        //表名
        TableName tableName = TableName.valueOf("studentinfo");
        if (admin.tableExists(tableName)){
            System.out.println("表名已经存在!");
        }else{
            //创建表的描述信息
            HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
            //列族的描述类
            HColumnDescriptor hColumnDescriptor = new HColumnDescriptor("stu".getBytes());
            //绑定
            hTableDescriptor.addFamily(hColumnDescriptor);
            //根据表的描述对象创建表
            admin.createTable(hTableDescriptor);
        }
    }
    public static void main(String[] args) throws IOException {
        init();     //初始化
        createTable();      //创建数据表
        close();    //关闭
    }

  

5.新增数据

    //新增数据
    public static void insert() throws IOException {
        //获取表对象
        Table table = connection.getTable(TableName.valueOf("studentinfo"));
        Put put01 = new Put("1111".getBytes());
        put01.add("stu".getBytes(),"name".getBytes(),"zhangsan".getBytes());
        put01.add("stu".getBytes(),"age".getBytes(),"12".getBytes());
        put01.add("stu".getBytes(),"sex".getBytes(),"man".getBytes());
        Put put02 = new Put("2222".getBytes());
        put02.add("stu".getBytes(),"name".getBytes(),"lisi".getBytes());
        put02.add("stu".getBytes(),"age".getBytes(),"15".getBytes());
        put02.add("stu".getBytes(),"sex".getBytes(),"nv".getBytes());
        table.put(put01);
        table.put(put02);
        table.close();
    }
    public static void main(String[] args) throws IOException {
        init();     //初始化
        insert();  //新增数据
        close();    //关闭
    }

  

6.查询表中所有的数据

    //查询表中所有数据
    public static void getData() throws IOException {
        //获取表对象
        Table table = connection.getTable(TableName.valueOf("studentinfo"));
        //创建ResultScanner对象
        ResultScanner scanner = table.getScanner(new Scan());
        for (Result result:scanner){
            for(Cell cell:result.rawCells()){
                System.out.println("rowkey:"+Bytes.toString(result.getRow()));
                System.out.print("family:"+Bytes.toString(CellUtil.cloneFamily(cell))+"\t");
                System.out.print("column:"+Bytes.toString(CellUtil.cloneQualifier(cell))+"\t");
                System.out.print("value:"+Bytes.toString(CellUtil.cloneValue(cell)));
                System.out.println();
                System.out.println();
            }
        }
        table.close();
    }
    public static void main(String[] args) throws IOException {
        init();     //初始化
        getData();  //查询表中所有数据
        close();    //关闭
    }

  

7.查询指定Row Key中的数据

    //查询指定Row Key中的数据
    public static void getDataByRowKey() throws IOException {
        //获取表对象
        Table table = connection.getTable(TableName.valueOf("studentinfo"));
        Get get = new Get(Bytes.toBytes("1111"));
        //创建result
        Result result = table.get(get);
        for (Cell cell:result.rawCells()){
            System.out.println("rowkey:"+Bytes.toString(result.getRow()));
            System.out.print("family==>"+Bytes.toString(CellUtil.cloneFamily(cell))+"\t");
            System.out.print("column==>"+Bytes.toString(CellUtil.cloneQualifier(cell))+"\t");
            System.out.print("value==>"+Bytes.toString(CellUtil.cloneValue(cell)));
            System.out.println();
            System.out.println();
        }
        table.close();
    }
    public static void main(String[] args) throws IOException {
        init();     //初始化
        getDataByRowKey();  //查询指定Row Key中的数据
        close();    //关闭
    }

  

8.删除指定Row Key中的数据

    //删除指定Row Key中的数据
    public static void deleteDataRowKey() throws IOException {
        //获取表对象
        Table table = connection.getTable(TableName.valueOf("studentinfo"));
        //设置要删除的rowkey
        Delete delete = new Delete(Bytes.toBytes("2222"));
        table.delete(delete);
        table.close();
    }
    public static void main(String[] args) throws IOException {
        init();     //初始化
        deleteDataRowKey(); //删除指定Row Key中的数据
        close();    //关闭
    }

  

9.删除指定列族的的列

    //删除指定列族的数据
    public static void deleteDataColumnFamily() throws IOException {
        //获取表对象
        Table table = connection.getTable(TableName.valueOf("studentinfo"));
        //设置要删除的rowkey
        Delete delete = new Delete(Bytes.toBytes("1111"));
        //设置指定列族
        delete.addFamily(Bytes.toBytes("stu"));
        table.delete(delete);
        table.getClass();
    }
    public static void main(String[] args) throws IOException {
        init();     //初始化
        deleteDataColumnFamily();   //删除指定列族的数据
        close();    //关闭
    }

  

10.删除表

    //删除表
    public static void deleteTable() throws IOException {
        TableName tableName = TableName.valueOf("studentinfo");
        //判断表是否存在
        if (admin.tableExists(tableName)){
            admin.disableTable(tableName);
            admin.deleteTable(tableName);
        }
    }
    public static void main(String[] args) throws IOException {
        init();     //初始化
        deleteTable();  //删除表
        close();    //关闭
    }

  

 

 posted on 2020-05-11 19:28  wnwn  阅读(529)  评论(0编辑  收藏  举报