Phoenix和Hbase的相关操作

1 在Phoenix上建Hbase映射表

在Phoenix可以直接使用建表sql来建立Hbase表,但是对于一张已经存在Hbase表时,我们如何在Phoenix建议映射表呢?答案是可以直接采用建表语句进行。语句如下:

create table "openapi"."openapi_jingdong_product_stock"(
    "uuid"   varchar not null primary key,
    "info"."create_time"    varchar,
    "info"."data_date"    varchar,
    "info"."ware_code"    varchar,
    "info"."product_code"    varchar,
    "info"."inve_qty"    varchar,
    "info"."vender_code"    varchar
) column_encoded_bytes=0;

其中:

  • uuid是Phoenix表的主键,对应到Hbase的row key,主键字段名可以是任意的;
  • 其他字段与Hbase表是一一对应的,格式是列族.列名,上述代码中的info就是列族,.后的就是列名

特别注意:Phoenix的表名、字段名等一般要加双引号,不加双引号将默认转换为大写

2 查询Hbase和Phoenix表结构

由于Hbase是一种非结构化的列式结构数据库,它的列是可以动态增加的,而且每一行可以包含的列都是不同的,因此我们无法在不扫描所有行的情况下确定Hbase所有的列。

Phoenix提供了一种使用sql方式查询Hbase数据库的方式,但是没有类似MySQL的describe命令,如果需要查询表结构需要借助系统表。hbase的所有表结构都保存在SYSTEM."CATALOG"表中,我们可以通过查询这个表来确定Phoenix的表结构,查询语句如下:

select * from SYSTEM."CATALOG" where TABLE_NAME='fact_b2c_crawl_sycm_self_shop_month'
and TABLE_SCHEM='crawl'

3 Phoenix插入数据

插入使用upsert命令,而不是insert

UPSERT INTO TEST VALUES('foo','bar',3);
UPSERT INTO TEST(NAME,ID) VALUES('foo',123);
UPSERT INTO TEST(ID, COUNTER) VALUES(123, 0) ON DUPLICATE KEY UPDATE COUNTER = COUNTER + 1;
UPSERT INTO TEST(ID, MY_COL) VALUES(123, 0) ON DUPLICATE KEY IGNORE;

你可能感兴趣的:(Phoenix和Hbase的相关操作)