当前位置:  开发笔记 > 编程语言 > 正文

Apache Phoenix的列族

如何解决《ApachePhoenix的列族》经验,为你挑选了1个好方法。

我创建了下表:

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 shell获取数据:

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 shell,尝试插入数据:

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

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

为什么?



1> 小智..:

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

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语句中不需要使用列系列名称限定列名称.如果您不需要匹配现有数据的格式,另一种选择是不要双引号.否则,请参阅此常见问题解答.

FWIW,提问的最佳位置在我们的开发者或用户邮件列表中.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有