1

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

truncate 'tablename'
enable 'tablename'

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

4

4 回答 4

2

现在可以使用管理员

Admin admin = Connection.getAdmin();
admin.truncateTable(TableName.valueOf("name_of_the_table",true);
于 2016-05-19T04:59:50.890 回答
1

API 中没有可用的截断。但是,HBaseAdmin类具有您需要的所有方法。看一下 :

1. public void disableTable(String tableName) 抛出 IOException

2. public void deleteTable(String tableName) 抛出 IOException

3. public void enableTable(String tableName) 抛出 IOException

高温高压

于 2013-10-23T21:23:57.597 回答
1

如果您可以在 HappyBase 中使用 Thrift 和 Python:

import happybase

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

这会创建一个新的空表。

于 2013-10-23T21:42:10.037 回答
0

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

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);
}
于 2016-10-27T15:26:39.657 回答