内容纲要
概要描述
本文描述在 Inceptor 中 drop hyperbase 表后,重建时报错表已存在的几种场景的解决方法
详细描述
- hyperbase metadata exists in zk
- 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}
删除相关记录
deleteall 'table', 'row_key'
deleteall 'hbase:meta','hpy_bank_infotest,,1622776293259.48b97eb4700ac5dec90639c866c5c7aa.'
deleteall 使用注意事项:
- 在 hbase shell 中 rowkey 一般会被自动换行
- rowkey 最后的点 . 也是 rowkey 的一部分
然后尝试再 inceptor 重建同名表即可