【异常】org.apache.phoenix.exception.PhoenixIOException: SYSTEM:CATALOG

1 详细异常信息

rror: SYSTEM:CATALOG (state=08000,code=101)
org.apache.phoenix.exception.PhoenixIOException: SYSTEM:CATALOG
        at org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:144)
        at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1379)
        at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1343)
        at org.apache.phoenix.query.ConnectionQueryServicesImpl.getTable(ConnectionQueryServicesImpl.java:1560)
        at org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:644)
        at org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:538)
        at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:428)
        at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:391)
        at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
        at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:390)
        at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:378)
        at org.apache.phoenix.jdbc.PhoenixStatement.executeUpdate(PhoenixStatement.java:1806)
        at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2536)
        at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2499)
        at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:76)
        at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2499)
        at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:256)
        at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:150)
        at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:222)
        at sqlline.DatabaseConnection.connect(DatabaseConnection.java:157)
        at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:203)
        at sqlline.Commands.close(Commands.java:906)
        at sqlline.Commands.closeall(Commands.java:880)
        at sqlline.SqlLine.begin(SqlLine.java:714)
        at sqlline.SqlLine.start(SqlLine.java:398)
        at sqlline.SqlLine.main(SqlLine.java:291)
Caused by: org.apache.hadoop.hbase.TableNotFoundException: SYSTEM:CATALOG
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1424)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1218)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1198)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1155)
        at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getRegionLocation(ConnectionManager.java:987)
        at org.apache.hadoop.hbase.client.HRegionLocator.getRegionLocation(HRegionLocator.java:83)
        at org.apache.hadoop.hbase.client.HTable.getRegionLocation(HTable.java:576)
        at org.apache.hadoop.hbase.client.HTable.getKeysAndRegionsInRange(HTable.java:792)
        at org.apache.hadoop.hbase.client.HTable.getKeysAndRegionsInRange(HTable.java:762)
        at org.apache.hadoop.hbase.client.HTable.getStartKeysInRange(HTable.java:1840)
        at org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1795)
        at org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1775)
        at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1363)
        ... 24 more 

2 原因

  自己之前的hbase存储的文件路径是本地文件系统,修改为HDFS路径后,Phoenix找不到系统表

3 解决办法

  a 先删除Zookeeper里面的hbase信息

  b 重启hbase,重新初始化

  c 重新启动Phoenix解决问题

如果是生产环境,不能够重新初始化hbase所有信息,那就得另外想办法了。