我是靠谱客的博主 害怕钢笔,最近开发中收集的这篇文章主要介绍利用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; }

 

转载于:https://www.cnblogs.com/itboys/p/6764054.html

最后

以上就是害怕钢笔为你收集整理的利用HBase的快照功能来修改表名的全部内容,希望文章能够帮你解决利用HBase的快照功能来修改表名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部