凤凰错误:hbase表未定义,即使它存在

时间:2015-07-30 13:38:14

标签: java hbase squirrel-sql phoenix

我正在尝试访问我的本地计算机上运行的hbase,其中zookeeper位于localhost:2181。我安装了phoenix-3.3.1-bin并试图访问已经存在的hbase tabe,但是没有。所以,只是为了测试,我使用凤凰命令行创建了一个表,并在运行时查看它!tables命令。但是当我运行selet命令时,它显示错误。

这就是我正在做的事情,我正在使用mac,hbase-0.94.26。同样的事情也发生在squirrel-sql客户端上。

0:jdbc:phoenix:localhost> CREATE TABLE stats.prod_metrics(host char(50)not null,created_date date not null,

。 。 。 。 。 。 。 。 。 。 。 。 > txn_count bigint CONSTRAINT pk PRIMARY KEY(host,created_date));

没有行影响(1.82秒)

0:jdbc:phoenix:localhost> !表

+ ------------------------------------------ + --- --------------------------------------- + ---------- -------------------------------- + ----------------- ---------- +

| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE |

+ ------------------------------------------ + --- --------------------------------------- + ---------- -------------------------------- + ----------------- ---------- +

| |系统|目录| SYSTEM TABLE |

| |系统| SEQUENCE | SYSTEM TABLE |

| |系统| STATS | SYSTEM TABLE |

| | STATS | PROD_METRICS | TABLE |

+ ------------------------------------------ + --- --------------------------------------- + ---------- -------------------------------- + ----------------- ---------- +

0:jdbc:phoenix:localhost>从PROD_METRICS中选择*;

Error: ERROR 1012 (42M03): Table undefined. tableName=PROD_METRICS (state=42M03,code=1012)
org.apache.phoenix.schema.TableNotFoundException: ERROR 1012 (42M03): Table undefined. tableName=PROD_METRICS
    at org.apache.phoenix.compile.FromCompiler$BaseColumnResolver.createTableRef(FromCompiler.java:336)
    at org.apache.phoenix.compile.FromCompiler$SingleTableColumnResolver.<init>(FromCompiler.java:236)
    at org.apache.phoenix.compile.FromCompiler.getResolverForQuery(FromCompiler.java:159)
    at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:318)
    at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:308)
    at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:225)
    at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:221)
    at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:54)
    at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:221)
    at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1059)
    at sqlline.Commands.execute(Commands.java:822)
    at sqlline.Commands.sql(Commands.java:732)
    at sqlline.SqlLine.dispatch(SqlLine.java:808)
    at sqlline.SqlLine.begin(SqlLine.java:681)
    at sqlline.SqlLine.start(SqlLine.java:398)
    at sqlline.SqlLine.main(SqlLine.java:292)

3 个答案:

答案 0 :(得分:2)

如果使用小写字母在HBase中创建表,则需要将表名括在引号中。否则,Phoenix会将表名转换为大写,并且找不到你的表。

答案 1 :(得分:1)

菲尼克斯表(和观点)是特别&#34;装饰&#34; hbase表。即他们附加了协处理器和一些额外的元数据,加上它们在Phoenix系统目录中注册,而普通的hbase表则没有。因此所有Phoenix表都是hbase表,但hbase表不一定是Phoenix表。

答案 2 :(得分:0)

我也面临同样的问题。这是由于不同版本的phoneix-client.jar然后是服务器。