Hbase ApachePhoenix的列系列

Hbase ApachePhoenix的列系列,hbase,phoenix,Hbase,Phoenix,我已经创建了下表: 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 into "events" ("event.uuid", "event.name", "product.name") values

我已经创建了下表:

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 into "events" ("event.uuid", "event.name", "product.name") values('1', 'click', 'api')
正在从HBase外壳获取数据:

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
无柱状家族-(

从HBase外壳,尝试插入数据:

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

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

为什么?

双引号标识符使其区分大小写,因此如果希望列族和列名都区分大小写,则需要将它们分别用双引号括起来,如下所示:

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 INTO "events" ("event"."uuid", "event"."name", "product"."name")
    VALUES ('1', 'click', 'api')
然后像这样插入:

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 INTO "events" ("event"."uuid", "event"."name", "product"."name")
    VALUES ('1', 'click', 'api')
UPSERT语句中不需要使用列族名称限定列名,除非列名不明确。如果不需要匹配现有数据的格式,另一种选择是不双引号。否则,例如,请参阅常见问题解答


FWIW,最好的提问地点是关于我们的开发人员或用户。

D'oh!我只读了。非常感谢。这对我来说不起作用,并引发了以下错误:错误:错误1003(42J01):主键列不能有族名。columnName=event.uUID组成主键的列不应该以列族作为前缀(就像消息所说的那样)。这将很好地工作:如果不存在“events”(“product”。“name”VARCHAR(32),“event”。“name”VARCHAR(32),“uuid”VARCHAR(32),CONSTRAINT pk主键(“uuid”))