凤凰图现有HBase表

时间:2015-04-24 06:44:43

标签: sql hbase phoenix nosql

我有一个Hbase表“http_access_log”,现在我想在其上使用Apache phoenix for SQL。

我应该创建phoenix视图或表来映射hbase表吗?如果hbase表由hbase api更新,凤凰视图或表是否会更新?

2 个答案:

答案 0 :(得分:3)

如果您有预先存在的表格,则必须创建一个视图才能访问它:

create view "http_access_log_v" (pk VARCHAR PRIMARY KEY, "colfam1"."colum1" VARCHAR, "colfam1"."colum2" VARCHAR) as select * from "http_access_log";

使用上面的视图,您可以像这样对其进行选择:

select * from http_access_log_v;

实施例

说我有一个HBase表' config'。我无法通过Phoenix直接选择此表。

sqlline> select * from "config"; 
Error: ERROR 1012 (42M03): Table undefined. tableName=config (state=42M03,code=1012)

但是,如果我针对此HBase表的select * from "config"创建一个视图:

sqlline> create view "config-data" (pk VARCHAR PRIMARY KEY, "data"."id" VARCHAR, "data"."categoryName" VARCHAR) as select * from "config";
No rows affected (1.588 seconds)

然后,我可以查询已在Phoenix SQL视图中配置的可用列的子集:

sqlline> select * from "config-data";
+------------------------------------------+------------------------------------------+------------------------------------------+
|                    PK                    |                    id                    |               categoryName               |
+------------------------------------------+------------------------------------------+------------------------------------------+
| QA-AA00|D|MC|MSG|C10|M3               | null                                     | null                                     |
| QA-AA00|D|MC|MSG|C2|M1                | null                                     | null                                     |
...

我仍然无法直接查询HBase表:

sqlline> select * from "config"; Error: ERROR 1012 (42M03): Table undefined. tableName=config (state=42M03,code=1012)

参考

答案 1 :(得分:-1)

根据文件:

https://phoenix.apache.org/faq.html#How_I_map_Phoenix_table_to_an_existing_HBase_table

您必须创建一个具有相同名称和所需架构的视图。