HBase应用(2.1)HBase表

HBase的数据坐标和传统关系数据库有较大区别:

  • 传统关系数据库:通过 行、列 即可确定一条数据
主键 列1 列2 列3
主键1 列值1 列值2 列值3

  • HBase:通过 行键、列族、列、时间戳确定一条数据,通过 行键、列族、列确定一个单元(Cell)

    HBase数据坐标

图片源自:《HBase实战》

  1. 创建表

    创建一个简单的表只需要指定表名和列族,任何表至少包含一个列族。

    例如:创建一个users表,并包含info列族

    • HBase Shell方式:

      1
      create 'users', 'info'
    • Java Client方式:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      package info.aviraer.demo.bigdata.core.hbase.chapter2;

      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.TableName;
      import org.apache.hadoop.hbase.client.Admin;
      import org.apache.hadoop.hbase.client.Connection;
      import org.apache.hadoop.hbase.client.ConnectionFactory;

      public class CreateTable {

      public static void main(String[] args) throws IOException {
      Configuration config = HBaseConfiguration.create();
      //配置zookeeper集群
      config.set("hbase.zookeeper.quorum", "centos0,centos1,centos2");
      Connection connection = ConnectionFactory.createConnection(config);

      Admin admin = connection.getAdmin();

      //创建表
      HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf("users"));
      descriptor.addFamily(new HColumnDescriptor("info"));
      admin.createTable(descriptor);

      admin.close();
      connection.close();
      }

      }

  2. 检查表模式

    • list - 列出表

      1
      2
      3
      4
      5
      6
      7
      hbase(main):001:0> list
      TABLE
      users
      users_stats
      2 row(s) in 0.2740 seconds

      => ["users", "users_stats"]
    • describe - 查看表参数

      1
      2
      3
      4
      5
      6
      7
      hbase(main):002:0> describe 'users'
      Table users is ENABLED
      users
      COLUMN FAMILIES DESCRIPTION
      {NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL
      => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
      1 row(s) in 0.1460 seconds