返回介绍

HBase 禁用表

发布于 2024-06-23 16:37:45 字数 7345 浏览 0 评论 0 收藏 0

使用HBase Shell禁用表

要删除表或更改其设置,您需要首先使用disable命令禁用该表。您可以使用enable命令重新启用它。
以下是禁用表的语法:

  1. disable 'emp'

例下面给出的示例显示了如何禁用表。

  1. hbase(main):025:0> disable 'emp'
  2. 0 row(s) in 1.2760 seconds

验证
禁用该表之后,您仍然可以通过list和exist命令来感知其存在。您无法扫描。它会给您以下错误。

  1. hbase(main):028:0> scan 'emp'
  2. ROW COLUMN + CELL
  3. ERROR: emp is disabled.

is_disabled

此命令用于查找是否禁用了表。其语法如下。

  1. hbase> is_disabled 'table name'

下面的示例验证是否禁用了名为emp的表。如果禁用,它将返回true,否则将返回false。

  1. hbase(main):031:0> is_disabled 'emp'
  2. true
  3. 0 row(s) in 0.0440 seconds

disable_all

此命令用于禁用所有与给定正则表达式匹配的表。下面给出了disable_all命令的语法。

  1. hbase> disable_all 'emp.+'

假设HBase中有5个表,分别是raja,rajani,rajendra,rajesh和raju。以下代码将禁用所有以raj开头的表。

  1. hbase(main):002:07> disable_all 'raj.*'
  2. raja
  3. rajani
  4. rajendra
  5. rajesh
  6. raju
  7. Disable the above 5 tables (y/n)?
  8. y
  9. 5 tables successfully disabled

使用Java API禁用表

要验证是否禁用了表,请使用isTableDisabled()方法;要禁用表,请使用disableTable()方法。这些方法属于HBaseAdmin类。请按照下面给出的步骤禁用表。

第1步

活动Admin类,如下所示。

  1. // Instantiating configuration class
  2. Configuration config = HBaseConfiguration.create();
  3. Connection connection = ConnectionFactory.createConnection(config);
  4. // Instantiating Admin class
  5. Admin admin = null;
  6. admin = connection.getAdmin();

第2步

使用isTableDisabled()方法验证是否禁用了该表,如下所示。

  1. Boolean isDisabled = admin.isTableDisabled(TableName.valueOf("emp"));

第3步

如果未禁用该表,请如下所示将其禁用。

  1. if(!isDisabled) {
  2. admin.disableTable(TableName.valueOf("emp"));
  3. System.out.println("Table disabled");
  4. }

下面给出的是验证表是否已禁用的完整程序;如果没有,如何禁用它。

  1. import java.io.IOException;
  2. import org.apache.hadoop.hbase.HBaseConfiguration;
  3. import org.apache.hadoop.hbase.TableName;
  4. import org.apache.hadoop.hbase.client.Connection;
  5. import org.apache.hadoop.hbase.client.ConnectionFactory;
  6. import org.apache.hadoop.hbase.client.Admin;
  7. import org.apache.hadoop.conf.Configuration;
  8. public class CreateTable {
  9. public static void main(String[] args) throws IOException {
  10. try {
  11. // Instantiating configuration class
  12. Configuration config = HBaseConfiguration.create();
  13. Connection connection = ConnectionFactory.createConnection(config);
  14. // Instantiating Admin class
  15. Admin admin = null;
  16. admin = connection.getAdmin();
  17. Boolean isDisabled = admin.isTableDisabled(TableName.valueOf("emp"));
  18. System.out.println(isDisabled);
  19. if(!isDisabled) {
  20. admin.disableTable(TableName.valueOf("emp"));
  21. System.out.println("Table disabled");
  22. }
  23. } catch (Exception e) {
  24. System.out.println(e.getMessage());
  25. }
  26. }
  27. }

编译并执行上述程序,如下所示。

  1. $javac DisableTable.java
  2. $java DsiableTable

以下应该是输出:

  1. false
  2. Table disabled

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文