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是一種非結構化的列式結構數(shù)據(jù)庫,它的列是可以動態(tài)增加的,而且每一行可以包含的列都是不同的,因此我們無法在不掃描所有行的情況下確定Hbase所有的列。

Phoenix提供了一種使用sql方式查詢Hbase數(shù)據(jù)庫的方式,但是沒有類似MySQL的describe命令,如果需要查詢表結構需要借助系統(tǒng)表。hbase的所有表結構都保存在SYSTEM."CATALOG"表中,我們可以通過查詢這個表來確定Phoenix的表結構,查詢語句如下:

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

3 Phoenix插入數(shù)據(jù)

插入使用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;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容