Part6---Java创建Hbase表

01.先查看HBase中表

(base) [root@192 ~]# hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.1.1, rb60a92d6864ef27295027f5961cb46f9162d7637, Fri Oct 26 19:27:03 PDT 2018
Took 0.0017 seconds
hbase(main):001:0> list
TABLE
Gadaite
STUDENT
SYSTEM.CATALOG
SYSTEM.CHILD_LINK
SYSTEM.FUNCTION
SYSTEM.LOG
SYSTEM.MUTEX
SYSTEM.SEQUENCE
SYSTEM.STATS
SYSTEM.TASK
StudentAndCourse
11 row(s)
Took 0.2929 seconds
=> ["Gadaite", "STUDENT", "SYSTEM.CATALOG", "SYSTEM.CHILD_LINK", "SYSTEM.FUNCTION", "SYSTEM.LOG", "SYSTEM.MUTEX", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "SYSTEM.TASK", "StudentAndCourse"]
hbase(main):002:0>

02.使用Hadoop的HBaseApi创建表

2.1 方式一

​ 该方式可能已经被启用

​ Family:为列簇的意思

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

public class CreateHbaseTable {
    public static void main(String[] args) throws Exception{
        Configuration conf = HBaseConfiguration.create();
        conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "192.168.1.10:2181");
        Connection con = ConnectionFactory.createConnection(conf);
        Admin admin = con.getAdmin();
        HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf("ideatest".getBytes()));
        HColumnDescriptor f1 = new HColumnDescriptor("F1");
        HColumnDescriptor f2 = new HColumnDescriptor("F2");
        f2.setVersions(1, 3);
        hTableDescriptor.addFamily(f1).addFamily(f2);
        admin.createTable(hTableDescriptor);
        admin.close();
        con.close();
    }
}

​ 在hbase shell中查看结果:

​ 生成新表:ideatest

hbase(main):002:0> list
TABLE
Gadaite
STUDENT
SYSTEM.CATALOG
SYSTEM.CHILD_LINK
SYSTEM.FUNCTION
SYSTEM.LOG
SYSTEM.MUTEX
SYSTEM.SEQUENCE
SYSTEM.STATS
SYSTEM.TASK
StudentAndCourse
ideatest
12 row(s)
Took 0.0138 seconds
=> ["Gadaite", "STUDENT", "SYSTEM.CATALOG", "SYSTEM.CHILD_LINK", "SYSTEM.FUNCTION", "SYSTEM.LOG", "SYSTEM.MUTEX", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "SYSTEM.TASK", "StudentAndCourse", "ideatest"]

2.2 方式二:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

public class CreateHbaseTable2 {
    public static void main(String[] args) throws Exception{
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum","192.168.1.10:2181");
        Connection conn = ConnectionFactory.createConnection(conf);
        Admin admin = conn.getAdmin();
        if(!admin.tableExists(TableName.valueOf("IDEATEST"))){
            TableName IDEATEST = TableName.valueOf("IDEATEST");
            //  表描述构造器
            TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(IDEATEST);
            //  列族描述器构造器
            ColumnFamilyDescriptorBuilder col1 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("col1"));
            ColumnFamilyDescriptorBuilder col2 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("col2"));
            //  列描述器
            ColumnFamilyDescriptor build1 = col1.build();
            ColumnFamilyDescriptor build2 = col2.build();
            //  添加列簇
            TableDescriptorBuilder builder = tableDescriptorBuilder.setColumnFamily(build1).setColumnFamily(build2);
            //  表描述器
            TableDescriptor tableDescriptor = builder.build();
            //  创建表
            admin.createTable(tableDescriptor);
        }
        else {
            System.out.println("表已存在");
        }
        admin.close();
        conn.close();
    }
}

​ 在Hbase shell中查看结果

​ 已生成IDEATEST表

hbase(main):004:0> list
TABLE
Gadaite
IDEATEST
STUDENT
SYSTEM.CATALOG
SYSTEM.CHILD_LINK
SYSTEM.FUNCTION
SYSTEM.LOG
SYSTEM.MUTEX
SYSTEM.SEQUENCE
SYSTEM.STATS
SYSTEM.TASK
StudentAndCourse
ideatest
13 row(s)
Took 0.0129 seconds
=> ["Gadaite", "IDEATEST", "STUDENT", "SYSTEM.CATALOG", "SYSTEM.CHILD_LINK", "SYSTEM.FUNCTION", "SYSTEM.LOG", "SYSTEM.MUTEX", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "SYSTEM.TASK", "StudentAndCourse", "ideatest"]

03.在hbase shell中删除表

​ 不是直接使用下面的方式删除整个表

hbase(main):005:0> drop "ideatest"

ERROR: Table ideatest is enabled. Disable it first.

For usage try 'help "drop"'

Took 0.0283 seconds
hbase(main):006:0> drop table "ideatest"
NoMethodError: undefined method `table' for main:Object

3.1 先将表设定为无效状态

disable "ideatest"

3.2 判断表是否无效

is_disabled "ideatest"

3.3 查看结果

​ ideatest表已经被删除

hbase(main):007:0> disable "ideatest"
Took 0.4582 seconds
hbase(main):008:0> is_disabled "ideatest"
true
Took 0.0067 seconds
=> 1
hbase(main):009:0> drop "ideatest"
Took 0.2399 seconds
hbase(main):010:0> list
TABLE
Gadaite
IDEATEST
STUDENT
SYSTEM.CATALOG
SYSTEM.CHILD_LINK
SYSTEM.FUNCTION
SYSTEM.LOG
SYSTEM.MUTEX
SYSTEM.SEQUENCE
SYSTEM.STATS
SYSTEM.TASK
StudentAndCourse
12 row(s)
Took 0.0098 seconds
=> ["Gadaite", "IDEATEST", "STUDENT", "SYSTEM.CATALOG", "SYSTEM.CHILD_LINK", "SYSTEM.FUNCTION", "SYSTEM.LOG", "SYSTEM.MUTEX", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "SYSTEM.TASK", "StudentAndCourse"]
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: HBase-Java API 是一种用于管理 HBase 的编程接口。使用 HBase-Java API,开发人员可以编写 Java 代码来创建、删除、修改和查询 HBase HBase-Java API 提供了一系列类和方法,可以让开发人员轻松地与 HBase 进行交互。例如,可以使用 HBaseAdmin 类来管理 HBase ,使用 HTable 类来访问 HBase 中的数据,使用 Put 类来插入数据,使用 Get 类来获取数据,等等。总之,HBase-Java API 是 HBase 的重要组成部分,它为开发人员提供了强大的工具来管理和操作 HBase 。 ### 回答2: HBase是一个分布式的列式存储数据库,在很多大数据应用中得到广泛的使用。它采用Hadoop作为其底层基础框架,同时提供了Java API供开发人员使用。HBaseJava API为开发人员提供了一个管理的接口,使得开发人员可以对HBase数据库中的进行创建、读取、修改和删除等基本操作。 首先,我们需要用Java API创建一个HBase数据库中的。使用HBaseJava API创建的流程如下: 1. 首先需要获取HBase Configuration对象,并设置HBase连接参数以连接HBase数据库。 2. 接下来,需要获取HBase Admin对象,以便在操作HBase数据库之前检查是否存在,如果不存在,需要创建。 3. 通过HBaseJava API创建时,需要指定名、列族的名称以及版本数等属性。 4. 创建时需要考虑的region的分配问题,可以对的region进行手动或自动分片,以此来控制HBase的负载均衡。 创建HBase数据库中的之后,我们可以使用Java API对进行读写操作。在进行读写操作时,需要使用HBaseJava API提供的Get的方法来获取中的数据、Scan方法来扫描整个、以及Put方法来向中插入数据。此外,在进行操作时还需要设置一些常见的数据操作参数,例如版本数、时间戳等。 在使用HBaseJava API时,还需要注意一些性能优化的问题,例如何时启用缓存、何时触发分区策略以及如何优化HBase的大小等。这些优化措施能够在HBase的性能以及数据读写时的延迟方面提供很好的支持和帮助。 总的来说,HBaseJava API提供的管理接口为开发人员提供了非常方便和快捷的方式来操作HBase数据库中的。通过使用这些API,开发人员可以创建、读取、修改和删除的数据,并且能够充分应用HBase的分布式特性来优化数据管理和性能提升。 ### 回答3: HBase是一个开源、分布式、非关系型数据库,它可以存储和处理大规模结构化、半结构化和非结构化数据。HBase Java API是HBase的官方API,它提供了对HBase的管理和操作功能,让开发人员可以通过Java代码轻松地连接到HBase数据库。 在使用HBase Java API管理时,首先需要创建一个HBaseConfiguration对象,它包含了连接HBase数据库所需的配置信息,如Zookeeper地址、HBase根目录等。然后,可以使用HBaseAdmin类创建、删除、修改,以及列族等操作。例如,创建一个可以通过以下代码实现: ``` HBaseAdmin admin = new HBaseAdmin(HBaseConfiguration.create()); HTableDescriptor tableDescriptor = new HTableDescriptor("table_name"); HColumnDescriptor columnDescriptor = new HColumnDescriptor("column_family"); tableDescriptor.addFamily(columnDescriptor); admin.createTable(tableDescriptor); ``` 创建时,需要先通过HTableDescriptor类定义名称,然后通过HColumnDescriptor类定义列族名称。可以通过addFamily()方法将列族添加到描述中,最后通过HBaseAdmin的createTable()方法创建。 除了创建之外,HBase Java API还提供了许多其他的操作,如获取信息、获取所有的列、删除等。同时,HBase Java API还提供了对数据的CRUD操作,包括put、get、scan、delete等方法,让开发人员可以方便地进行数据操作。 总之,HBase Java API是一个非常强大的工具,它可以使开发人员轻松地管理HBase数据库,并实现数据的高效存储和处理。但是,在使用HBase Java API时,需要了解HBase的基本知识和API的用法,才能更好地发挥其功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值