是否可以使用Java截断并启用HBase表?

时间:2013-10-23 20:08:07

标签: java hbase

是否有办法使用Java API截断并重新启用htable,类似于在shell中使用以下命令?

truncate 'tablename'
enable 'tablename'

有没有比迭代每一行并使用deleteAll更好的方法?

4 个答案:

答案 0 :(得分:1)

API中没有这样的截断。但是,课程 HBaseAdmin 拥有您需要的所有方法。看看:

<强> 1。 public void disableTable(String tableName) throws IOException

<强> 2。 public void deleteTable(String tableName) throws IOException

第3。 public void enableTable(String tableName) throws IOException

HTH

答案 1 :(得分:1)

如果你可以使用Thrift和Python和HappyBase:

import happybase

c = happybase.Connection()
c.disable_table('tablename')
c.delete_table('tablename')
c.create_table(
    'tablename', {'cf1': dict() }
)

这会创建一个新的空表。

答案 2 :(得分:0)

现在可以使用admin

Admin admin = Connection.getAdmin();
admin.truncateTable(TableName.valueOf("name_of_the_table",true);

答案 3 :(得分:0)

我正在使用版本0.98,它不包含该API,因此这里是一个示例代码:

public static void main(String[] args) throws Exception{
    String table = "yourTableName";
    Configuration conf = HBaseConfiguration.create();
    conf.set("hbase.zookeeper.quorum", "hbaseZK host");
    HBaseAdmin hBaseAdmin = new HBaseAdmin(conf);
    HTableDescriptor desciptor = hBaseAdmin.getTableDescriptor(table.getBytes());
    hBaseAdmin.disableTable(table);
    hBaseAdmin.deleteTable(table);
    hBaseAdmin.createTable(desciptor);
}