Hbase操作表和Java API

Hbasel列出表
使用list命令可列出所有表

hbase(main):001:0 > list

使用Java API列出表

下面给出的是使用Java API程序列出所有HBase中表的列表。

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;


public class ListTables {

   public static void main(String args[])throws MasterNotRunningException, IOException{

   // Instantiating a configuration class
   Configuration conf = HBaseConfiguration.create();

   // Instantiating HBaseAdmin class
   HBaseAdmin admin = new HBaseAdmin(conf);

   // Getting all the list of tables using HBaseAdmin object
   HTableDescriptor[] tableDescriptor =admin.listTables();

   // printing all the table names.
   for (int i=0; i<tableDescriptor.length;i++ ){
      System.out.println(tableDescriptor[i].getNameAsString());
   }

   }
 }

HBase禁用表
hbase禁用表使用 disable命令:

disable '表名'

使用is_disabled命令查看表是否被禁用,返回true或者false

hbase> is_disabled 'table name'

禁用所有表:disable_all

hbase> disable_all 'r.*'  禁用所有和 r.* 匹配的表

输出:

hbase(main):002:0> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

禁用表使用Java API

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DisableTable{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

   // Instantiating configuration class
   Configuration conf = HBaseConfiguration.create();

   // Instantiating HBaseAdmin class
   HBaseAdmin admin = new HBaseAdmin(conf);

   // Verifying weather the table is disabled
   Boolean bool = admin.isTableDisabled("emp");
   System.out.println(bool);

   // Disabling the table using HBaseAdmin object
   if(!bool){
      admin.disableTable("emp");
      System.out.println("Table disabled");
   }

   }
}

HBase启用表
启用表:enable

hbase(main):005:0> enable 'emp'
0 row(s) in 0.4580 seconds

判断表是否被启用:is_enabled

hbase(main):031:0> is_enabled 'emp'
true
0 row(s) in 0.0440 seconds

使用Java API启用表

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class EnableTable{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

   // Instantiating configuration class
   Configuration conf = HBaseConfiguration.create();

   // Instantiating HBaseAdmin class
   HBaseAdmin admin = new HBaseAdmin(conf);

   // Verifying weather the table is disabled
   Boolean bool = admin.isTableEnabled("emp");
   System.out.println(bool);

   // Disabling the table using HBaseAdmin object
   if(!bool){
      admin.enableTable("emp");
      System.out.println("Table Enabled");
   }

   }
}

HBase表描述和修改

hbase(main):002:0> describe 'coupon:coupon_member'
Table coupon:coupon_member is ENABLED                                                                                                                                                                                                                                         
coupon:coupon_member                                                                                                                                                                                                                                                          
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.1830 seconds

修改


alter用于更改现有表的命令。使用此命令可以更改列族的单元,设定最大数量和删除表范围运算符,并从表中删除列家族。

更改列族单元格的最大数目
下面给出的语法来改变列家族单元的最大数目。

hbase> alter 't1', NAME => 'f1', VERSIONS => 5
在下面的例子中,单元的最大数目设置为5。

hbase(main):003:0> alter 'emp', NAME => 'personal data', VERSIONS => 5
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.3050 seconds

表范围运算符
使用alter,可以设置和删除表范围,运算符,如MAX_FILESIZE,READONLY,MEMSTORE_FLUSHSIZE,DEFERRED_LOG_FLUSH等。

设置只读
下面给出的是语法,是用以设置表为只读。

hbase>alter ‘t1’, READONLY(option)
在下面的例子中,我们已经设置表emp为只读。

hbase(main):006:0> alter 'emp', READONLY
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2140 seconds

删除表范围运算符
也可以删除表范围运算。下面给出的是语法,从emp表中删除“MAX_FILESIZE”。

hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'

删除列族
使用alter,也可以删除列族。下面给出的是使用alter删除列族的语法。

hbase> alter ‘ table name ’, ‘delete => ‘ column family ’ 

下面给出的是一个例子,从“emp”表中删除列族。

假设在HBase中有一个employee表。它包含以下数据:

hbase(main):006:0> scan 'employee'

         ROW                   COLUMN+CELL
row1 column=personal:city, timestamp=1418193767, value=hyderabad

row1 column=personal:name, timestamp=1418193806767, value=raju

row1 column=professional:designation, timestamp=1418193767, value=manager

row1 column=professional:salary, timestamp=1418193806767, value=50000

1 row(s) in 0.0160 seconds 

现在使用alter命令删除指定的 professional 列族。

hbase(main):007:0> alter 'employee','delete'=>'professional'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2380 seconds

现在验证该表中变更后的数据。观察列族“professional”也没有了,因为前面已经被删除了。

hbase(main):003:0> scan 'employee'
 ROW             COLUMN+CELL
row1 column=personal:city, timestamp=14181936767, value=hyderabad

row1 column=personal:name, timestamp=1418193806767, value=raju

1 row(s) in 0.0830 seconds

使用Java API添加一列族

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class AddColoumn{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class.
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Instantiating columnDescriptor class
      HColumnDescriptor columnDescriptor = new HColumnDescriptor("contactDetails");

      // Adding column family
      admin.addColumn("employee", columnDescriptor);
      System.out.println("coloumn added");
   }
}

使用Java API删除列族

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DeleteColoumn{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class.
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Deleting a column family
      admin.deleteColumn("employee","contactDetails");
      System.out.println("coloumn deleted"); 
   }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: HBase是一个分布式的、面向列的NoSQL数据库,它是建立在Hadoop之上的。HBase提供了Java API来管理,这些API可以用来创建、删除、修改和查询。使用Java API可以方便地与HBase进行交互,实现数据的读写和管理。在使用Java API时,需要先创建一个HBaseConfiguration对象,然后通过该对象创建一个HBaseAdmin对象,通过HBaseAdmin对象可以进行的管理操作。同时,还可以使用HBase的Put和Get对象来进行数据的读写操作。总之,使用Java API可以方便地管理HBase,实现数据的高效存储和查询。 ### 回答2: HBase是一个高可扩展性、高可靠性的分布式列存储系统,常用于海量数据的存储与实时查询。在HBase中,被分成若干区域(Region),每个Region包含一段rowkey范围内的数据。HBase使用Zookeeper协调Region Server和HMaster的进程启动和监管系统,其提供了简单的Java API进行操作和使用。 HBase中的Java API提供了一系列操作的方法,主要包括创建、删除、获取信息、插入数据、查询数据和删除数据等操作。 首先,创建需要确定名、列族和行键的设计。使用Java API时,可使用TableDescriptorBuilder来创建的描述,其中需要指定名和列族名。对于每个列族,需要指定数据是否压缩、存储型等信息。 其次,对于已有进行删除时,首先要停止对该的所有操作,并将其进行禁用。使用Java API时,可使用Admin.disableTable()方法对进行禁用,然后通过Admin.deleteTable()方法将进行删除。 获取信息可使用Admin.getDescriptor()方法获取的描述信息,包括名、列族和数据存储信息等。 对于插入数据,HBase中的数据是以KV(Key-Value)的形式存储,所以需要一个Put对象来承载需要存储的数据。使用Table.put()方法可以将数据存储到对应中。 查询数据可使用Scan或Get方法,其中Scan可针对整个进行扫描,Get可获取指定的行键的数据。使用Scan和Get方法可获取批量数据和单条数据,具体使用时根据实际情况进行选择。 删除数据可使用Delete方法,可以删除指定行键的数据。使用Table.delete()方法可以实现对数据的删除操作。 总之,HBaseJava API提供了方便快捷的方式对HBase进行管理和操作,可以很好地满足海量数据的存储和实时查询需求。 ### 回答3: HBase是一个开源的NoSQL数据库,采用分布式存储的方式来存储数据,并且可以在百万级别的数据规模下保证数据的高可靠性、高可扩展性和高性能。HBase提供了Java API来管理,实现数据的增删改查等操作。 在使用HBase Java API管理时,需要先连接到HBase集群。可以通过HBaseConfiguration来创建一个Configuration实例,该实例包含了与Hadoop和HBase相关的配置信息,然后通过ConnectionFactory的createConnection方法来创建一个Connection实例,即可连接到HBase集群。 对于的管理,HBase提供了Table,通过该的实例可以进行数据的增删改查操作。需要通过TableDescriptorBuilder构建的描述信息,包括名、列族等信息,然后通过Admin的createTable方法来创建。如果需要删除,则可以使用Admin的deleteTable方法来删除。 对于数据的增删改查操作,需要先获取到Table的实例,然后通过Put、Delete和Get来进行数据的插入、删除和查询操作。对于Put的实例,需要通过addColumn方法来定义要插入的列族和列,然后通过add方法来设置列的值;对于Delete的实例,需要通过addColumn方法来定义要删除的列族和列;对于Get的实例,则需要通过addColumn方法来定义要查询的列族和列,然后通过Result的实例来获取查询结果。 在进行数据操作时,如果需要批量操作,可以使用Batch的实例来进行批量操作。Batch提供了一系列add方法用于添加Put、Delete和Increment对象,然后通过Table的batch方法来批量提交操作。 总之,HBase Java API提供了一系列方便的方法来管理和进行数据操作,可以满足大规模数据存储的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值