Apache Phoenix 的列族
Column family with Apache Phoenix
我创建了以下 table:
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:*
为什么?
双引号标识符使其区分大小写,因此如果您希望列族和列名都区分大小写,则需要将它们分别括起来在像这样的双引号中:
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 语句中不需要使用列族名称限定列名称,除非列名称不明确。如果您不需要匹配现有数据的格式,另一种选择是不对任何内容进行双引号。否则,有关示例,请参阅 this 常见问题解答。
FWIW,提问的最佳地点是我们的开发人员或用户 mailing lists。
我创建了以下 table:
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:*
为什么?
双引号标识符使其区分大小写,因此如果您希望列族和列名都区分大小写,则需要将它们分别括起来在像这样的双引号中:
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 语句中不需要使用列族名称限定列名称,除非列名称不明确。如果您不需要匹配现有数据的格式,另一种选择是不对任何内容进行双引号。否则,有关示例,请参阅 this 常见问题解答。
FWIW,提问的最佳地点是我们的开发人员或用户 mailing lists。