我创建了下表:
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:
UPSERT INTO "events" ("event"."uuid", "event"."name", "product"."name") VALUES ('1', 'click', 'api')
除非列名不明确,否则UPSERT语句中不需要使用列系列名称限定列名称.如果您不需要匹配现有数据的格式,另一种选择是不要双引号.否则,请参阅此常见问题解答.
FWIW,提问的最佳位置在我们的开发者或用户邮件列表中.