我有一个hbase表“http\u access\u log”,现在我想在上面使用apachephoenix for sql。我应该创建phoenix视图或表来Maphbase表吗?如果hbase api更新了hbase表,那么phoenix视图或表会被更新吗?
9o685dep1#
根据文件:https://phoenix.apache.org/faq.html#how_i_map_phoenix_table_to_an_existing_hbase_table必须创建具有相同名称和所需架构的视图。
xcitsw882#
如果您有一个预先存在的表,则必须创建一个视图才能访问它:
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城直接选择这张table。
sqlline> select * from "config"; Error: ERROR 1012 (42M03): Table undefined. tableName=config (state=42M03,code=1012)
但是如果我创建一个视图 select * from "config" 在此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表:
如何将phoenix表Map到现有的hbase表?
2条答案
按热度按时间9o685dep1#
根据文件:
https://phoenix.apache.org/faq.html#how_i_map_phoenix_table_to_an_existing_hbase_table
必须创建具有相同名称和所需架构的视图。
xcitsw882#
如果您有一个预先存在的表,则必须创建一个视图才能访问它:
在上述视图就位后,您可以对其进行如下选择:
示例
假设我有一个hbase表'config'。我不能通过Phoenix城直接选择这张table。
但是如果我创建一个视图
select * from "config"
在此hbase表中:然后,我可以查询在phoenix sql视图中配置的可用列的子集:
我仍然无法直接查询hbase表:
参考文献
如何将phoenix表Map到现有的hbase表?