2015-12-06 30 views
2

我創建下表:系列列阿帕奇鳳凰

CREATE TABLE IF NOT EXISTS "events" (
"product.name" VARCHAR(32), 
"event.name" VARCHAR(32), 
"event.uuid" VARCHAR(32), 
CONSTRAINT pk PRIMARY KEY ("event.uuid") 
) 

插入一個事件:從HBase的外殼

upsert into "events" ("event.uuid", "event.name", "product.name") values('1', 'click', 'api') 

獲取數據:

hbase(main):020:0> scan 'events' 
ROW             COLUMN+CELL 
1             column=0:_0, timestamp=1449417795078, value= 
1             column=0:event.name, timestamp=1449417795078, value=click 
1             column=0:product.name, timestamp=1449417795078, value=api 
1 row(s) in 0.0200 seconds 

無柱familty; - (

從HBase外殼嘗試插入數據:

hbase(main):021:0> put 'events', '2', 'event:name','buy' 

ERROR: Unknown column family! Valid column names: 0:* 

爲什麼?

回答

6

雙引號的標識符使得它區分大小寫的,所以如果你想既列家庭和列名是大小寫敏感的,你需要單獨包圍他們每個在雙引號是這樣的:

CREATE TABLE IF NOT EXISTS "events" (
    "product"."name" VARCHAR(32), 
    "event"."name" VARCHAR(32), 
    "event"."uuid" VARCHAR(32), 
    CONSTRAINT pk PRIMARY KEY ("event"."uuid") 
) 

然後UPSERT這樣的:

UPSERT INTO "events" ("event"."uuid", "event"."name", "product"."name") 
    VALUES ('1', 'click', 'api') 

與列族名的排位賽中列名在UPSERT聲明不需要,除非列名不明確。如果你不需要匹配現有數據的格式,另一種選擇是不要雙引號。否則,例如,請參見this FAQ。

FWIW,問問題的最佳位置在我們的開發人員或用戶mailing lists上。

+0

D'oh!我只閱讀了https://phoenix.apache.org/language/index.html#column_ref。非常感謝你。 –