hbase常用命令及使用方法(查看hbase表结构的命令)

首先通过docker安装Hbase

docker search hbase docker pull harisekhon/hbase

启动hbase镜像

docker run -d -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16201:16201 -p 16301:16301 -p 16030:16030 -p 16020:16020 --name hbase001 harisekhon/hbase

访问hbase

访问localhost:16010

hbase常用命令及使用方法(查看hbase表结构的命令)

如上是命令行的一些基本操作,详细操作可以查看官网:

http://abloz.com/hbase/book.html

下面是通过java api的方式操作hbase

  • 添加maven依赖
<dependency>    <groupId>org.apache.hbase</groupId>    <artifactId>hbase-client</artifactId>    <version>2.1.3</version></dependency>

测试工具栏如下:

package com.example.redisiondemo.utils;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.*;import org.apache.hadoop.hbase.client.*;import org.apache.hadoop.hbase.client.Admin;import org.apache.hadoop.hbase.util.Bytes;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class HbaseTest {    private static Admin admin;    private static final String COLUMNS_FAMILY_1 = \"cf1\";    private static final String COLUMNS_FAMILY_2 = \"cf2\";    public static Connection initHbase() throws IOException {        Configuration configuration = HBaseConfiguration.create();        configuration.set(\"hbase.zookeeper.quorum\", \"127.0.0.1\");        configuration.set(\"hbase.zookeeper.property.clientPort\", \"2181\");        configuration.set(\"hbase.master\", \"127.0.0.1:16010\");        Connection connection = ConnectionFactory.createConnection(configuration);        return connection;    }//创建表 create    public static void createTable(TableName tableName, String[] cols) throws IOException {        admin = initHbase().getAdmin();        if (admin.tableExists(tableName)) {            System.out.println(\"Table Already Exists!\");        } else {            HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);            for (String col : cols) {                HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(col);                hTableDescriptor.addFamily(hColumnDescriptor);            }            admin.createTable(hTableDescriptor);            System.out.println(\"Table Create Successful\");        }    }    public static TableName getTbName(String tableName) {        return TableName.valueOf(tableName);    }    // 删除表 drop    public static void deleteTable(TableName tableName) throws IOException {        admin = initHbase().getAdmin();        if (admin.tableExists(tableName)) {            admin.disableTable(tableName);            admin.deleteTable(tableName);            System.out.println(\"Table Delete Successful\");        } else {            System.out.println(\"Table does not exist!\");        }    } //put 插入数据    public static void insertData(TableName tableName, Student student) throws IOException {        Put put = new Put(Bytes.toBytes(student.getId()));        put.addColumn(Bytes.toBytes(COLUMNS_FAMILY_1), Bytes.toBytes(\"name\"), Bytes.toBytes(student.getName()));        put.addColumn(Bytes.toBytes(COLUMNS_FAMILY_1), Bytes.toBytes(\"age\"), Bytes.toBytes(student.getAge()));        initHbase().getTable(tableName).put(put);        System.out.println(\"Data insert success:\" + student.toString());    }    // delete 删除数据    public static void deleteData(TableName tableName, String rowKey) throws IOException {        Delete delete = new Delete(Bytes.toBytes(rowKey));      // 指定rowKey//        delete = delete.addColumn(Bytes.toBytes(COLUMNS_FAMILY_1), Bytes.toBytes(\"name\"));  // 指定column,也可以不指定,删除该rowKey的所有column        initHbase().getTable(tableName).delete(delete);        System.out.println(\"Delete Success\");    }    // scan数据    public static List<Student> allScan(TableName tableName) throws IOException {        ResultScanner results = initHbase().getTable(tableName).getScanner(new Scan().addFamily(Bytes.toBytes(\"cf1\")));        List<String> list = new ArrayList<>();        for (Result result : results) {            Student student = new Student();            for (Cell cell : result.rawCells()) {                String colName = Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());                String value = Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());            }        }        return null;    }    // 根据rowkey get数据    public static Student singleGet(TableName tableName, String rowKey) throws IOException {        Student student = new Student();        student.setId(rowKey);        Get get = new Get(Bytes.toBytes(rowKey));        if (!get.isCheckExistenceOnly()) {            Result result = initHbase().getTable(tableName).get(get);            for (Cell cell : result.rawCells()) {                String colName = Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());                String value = Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength());                switch (colName) {                    case \"name\":                        student.setName(value);                        break;                    case \"age\":                        student.setAge(value);                        break;                    default:                        System.out.println(\"unknown columns\");                }            }        }        System.out.println(student.toString());        return student;    }    // 查询指定Cell数据    public static String getCell(TableName tableName, String rowKey, String cf, String column) throws IOException {        Get get = new Get(Bytes.toBytes(rowKey));        String rst = null;        if (!get.isCheckExistenceOnly()) {            get = get.addColumn(Bytes.toBytes(cf), Bytes.toBytes(column));            try {                Result result = initHbase().getTable(tableName).get(get);                byte[] resByte = result.getValue(Bytes.toBytes(cf), Bytes.toBytes(column));                rst = Bytes.toString(resByte);            } catch (Exception exception) {                System.out.printf(\"columnFamily or column does not exists\");            }        }        System.out.println(\"Value is: \" + rst);        return rst;    }    public static void main(String[] args) throws IOException{        Student student = new Student();        student.setId(\"1\");        student.setName(\"hzp\");        student.setAge(\"18\");        String table = \"student\";      //  createTable(getTbName(table), new String[]{COLUMNS_FAMILY_1, COLUMNS_FAMILY_2});    //   deleteTable(getTbName(table));          insertData(getTbName(table), student);//       deleteData(getTbName(table), \"1\");      //  singleGet(getTbName(table), \"2\");    //    getCell(getTbName(table), \"1\", \"cf1\", \"name\");    }}
student实体package com.example.redisiondemo.utils;public class Student {    private String id;    private String name;    private String age;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    @Override    public String toString() {        return \"Student{\" +                \"id=\'\" + id + \'\'\' +                \", name=\'\" + name + \'\'\' +                \", age=\'\" + age + \'\'\' +                \'}\';    }    public void setName(String name) {        this.name = name;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }}
(0)
小多多的头像小多多创始人

相关推荐

发表回复

登录后才能评论