当表存在时,HBase抛出TableNotFoundException

当表存在时,HBase抛出TableNotFoundException,hbase,Hbase,下面的代码 private def deleteTable(tableName: String): Unit = { val tableNames = admin.listTableNames() println(s"HBase has the following tables: ${tableNames.map(_.toString).toList}") tableNames.find(_.getNameAsString == tableName) match {

下面的代码

private def deleteTable(tableName: String): Unit = {
 val tableNames = admin.listTableNames()
    println(s"HBase has the following tables: ${tableNames.map(_.toString).toList}")
    tableNames.find(_.getNameAsString == tableName) match {
      case Some(matchedTableName) =>
        admin.disableTable(matchedTableName)
        admin.deleteTable(matchedTableName)
        println(s"Table $tableName was found in HBase and deleted.")
      case None => println(s"Table $tableName was not in HBase.")
    }
}
会扔

17/10/02 20:45:22 ERROR ApplicationMaster: User class threw exception: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hbase.TableNotFoundException): XXXX
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hbase.TableNotFoundException): XXXX
    at org.apache.hadoop.hbase.master.procedure.DisableTableProcedure.prepareDisable(DisableTableProcedure.java:274)
    at org.apache.hadoop.hbase.master.procedure.DisableTableProcedure.executeFromState(DisableTableProcedure.java:126)
    at org.apache.hadoop.hbase.master.procedure.DisableTableProcedure.executeFromState(DisableTableProcedure.java:54)
    at org.apache.hadoop.hbase.procedure2.StateMachineProcedure.execute(StateMachineProcedure.java:139)
    at org.apache.hadoop.hbase.procedure2.Procedure.doExecute(Procedure.java:499)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1148)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:943)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:896)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$400(ProcedureExecutor.java:78)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$2.run(ProcedureExecutor.java:498)
这对我来说毫无意义,因为可以从admin检索表名,但禁用它时,突然找不到表

编辑: 在HBase外壳上,我尝试了

hbase(main):011:0> user_permission 'XXXX'
User                                                         Namespace,Table,Family,Qualifier:Permission                                                                                                                                      

ERROR: DISABLED: Security features are not available

看起来运行脚本的用户没有足够的权限访问该表。你能检查一下吗?@Miguel我的检查结果是否意味着没有权限问题?看起来运行脚本的用户没有足够的权限访问该表。你能检查一下吗?@Miguel我的检查结果是否意味着没有权限问题?