zoukankan      html  css  js  c++  java
  • 利用HBase的快照功能来修改表名

    hbase的快照功能常常被用来做数据的恢复的,但是由于项目的特殊需求需要改hbase表的表名。在官网上通过快照功能来修改hbase表名的用法:

    下面展示用shell命令的和Java api两种方式:

    In versions 0.90.x of hbase and earlier, we had a simple script that would rename the hdfs table directory and then do an edit of the hbase:meta table replacing all mentions of the old table name with the new. The script was called ./bin/rename_table.rb. The script was deprecated and removed mostly because it was unmaintained and the operation performed by the script was brutal.

    As of hbase 0.94.x, you can use the snapshot facility renaming a table. Here is how you would do it using the hbase shell:

    1. hbase shell

    hbase shell> disable 'tableName'
    hbase shell> snapshot 'tableName', 'tableSnapshot'
    hbase shell> clone_snapshot 'tableSnapshot', 'newTableName'
    hbase shell> delete_snapshot 'tableSnapshot'
    hbase shell> drop 'tableName'

    2. Java api

     public static boolean renameHBaseTable(String oldTableName) throws Exception {
        //创建连接 Connection con
    = ConnectionFactory.createConnection();
        //通过连接获取表的管理对象 Admin admin
    = con.getAdmin(); String snapshotName = oldTableName + "_snap"; String newTableName = oldTableName + "_ueser_delete";     //做快照之前先禁用表 admin.disableTable(TableName.valueOf(oldTableName));
        //把之前的表做个快照 admin.snapshot(snapshotName, TableName.valueOf(oldTableName));
        //然后在从当前快照中克隆出一个新的表 admin.cloneSnapshot(snapshotName, TableName.valueOf(newTableName));     //删除快照 admin.deleteSnapshot(snapshotName);
        //删除之前的表 admin.deleteTable(TableName.valueOf(oldTableName));
    return true; }
  • 相关阅读:
    用JLabel显示时间-- JAVA初学者遇到的一个困难
    linux下观看b站视频,解决字体乱码
    fedora21 codeblocks在编辑装态下无法输入
    fedora21安装无线驱动
    Hdu 1053 Entropy
    linux下的压缩解压命令 tar 的简单描述
    表的截断、删除、创建
    列的维护
    非分区表的重组
    创建高效且易于管理的表以及表的管理和维护
  • 原文地址:https://www.cnblogs.com/itboys/p/6764054.html
Copyright © 2011-2022 走看看