重建同名hyperbase表报错的几种场景的解决方法

  其他常见问题
内容纲要

概要描述

本文描述在 Inceptor 中 drop hyperbase 表后,重建时报错表已存在的几种场景的解决方法


详细描述

  1. hyperbase metadata exists in zk
  2. table already exists within HBase; use CREATE EXTERNAL TABLE instead to register it in Hive

场景 1、hyperbase metadata exists in zk

问题原因
引起这种错误的原因是删除方法不规范;在 hbase shell 先 disable 再 drop,这种操作无法删除 zookeeper 上的元信息;
如果是通过 hbase shell 删除表,建议使用 delete_table 方法删除 hyperbase 表。

解决方法
如果已经在 hbase shell 中使用 disable + drop 这种方法删除了表,则需要按照以下步骤删除 zookeeper 上的这张表的元数据:

hbase zkcli
rmr /hyperbase1/table/{tablename}
rmr /hyperbase1/hyperbasemetadata/{namespace}/{tablename}

场景 2、table already exists within HBase; use CREATE EXTERNAL TABLE instead to register it in Hive

问题原因

表的元数据信息仍然残留在 hbase:meta 表里

解决方法
确认并删除 zookeeper 中的 hyperbase 表的残留信息

hbase zkcli
rmr /hyperbase1/table/{tablename}
rmr /hyperbase1/hyperbasemetadata/{namespace}/{tablename}

进入 hbase shell,对 hbase:meta 表里残留的内容进行相关修改

kinit hbase
hbase shell

查看hbase:meta表

scan 'hbase:meta'

找到想要删除的表信息 此处以表 hpy_bank_infotest 为例

scan 'hbase:meta',{STARTROW=>'hpy_bank_infotest',LIMIT=>1}

file

删除相关记录

deleteall 'table', 'row_key'
deleteall 'hbase:meta','hpy_bank_infotest,,1622776293259.48b97eb4700ac5dec90639c866c5c7aa.'

file

deleteall 使用注意事项:

  1. 在 hbase shell 中 rowkey 一般会被自动换行
  2. rowkey 最后的点 . 也是 rowkey 的一部分

然后尝试再 inceptor 重建同名表即可

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。