我正在尝试访问本地计算机上运行的hbase,zookeeper位于localhost:2181. 我安装了phoenix-3.3.1-bin并试图访问一个已经存在的hbase表,但无法访问。所以,为了测试,我使用phoenix命令行创建了一个表,并在运行时查看它!tables命令。但是当我运行selet命令时,它显示错误。
这就是我正在做的,我正在使用mac,hbase-0.94.26。同样的事情也发生在squirrelsql客户机上。
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) );
No rows affected (1.82 seconds)
0: jdbc:phoenix:localhost> !tables
+------------------------------------------+------------------------------------------+------------------------------------------+---------------------------+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE |
+------------------------------------------+------------------------------------------+------------------------------------------+---------------------------+
| | SYSTEM | CATALOG | SYSTEM TABLE |
| | SYSTEM | SEQUENCE | SYSTEM TABLE |
| | SYSTEM | STATS | SYSTEM TABLE |
| | STATS | PROD_METRICS | TABLE |
+------------------------------------------+------------------------------------------+------------------------------------------+---------------------------+
0: jdbc:phoenix:localhost> select * from 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条答案
按热度按时间wbrvyc0a1#
phoenix表(和视图)是经过特殊“修饰”的hbase表。i、 e.它们附带了协处理器和一些额外的元数据块,而且它们在phoenix系统目录中注册,而普通hbase表则没有。所以所有的phoenix表都是hbase表,但是hbase表不一定是phoenix表。
xmakbtuz2#
如果在hbase中使用小写字母创建表,则需要将表名括在引号中。否则,phoenix将把表名转换为大写,它将找不到您的表。
tuwxkamq3#
我也面临同样的问题。这是因为phoneix-client.jar的版本与服务器的版本不同。