hbase - 列族与 Apache 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('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 .

关于hbase - 列族与 Apache Phoenix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34119543/

相关文章:

hadoop - 节点/hbase 不在 ZooKeeper 中

hadoop - 客户端的Phoenix Installation给出异常?

java - 无法提交并发的Hadoop作业

linux - ./start-hbase.sh 不是独立启动的

opencv - 从 hbase 读取图像并使用 Opencv 检测该图像中的人脸

hadoop - HBase 随机写入是如何工作的

java - Apache Phoenix-sqlline.py与sqlline-think.py-有什么区别?

hadoop - HORTONWORKS-Hbase/Phoenix-WALEditCodec-缺少

hadoop - Phoenix 表上的配置单元查询抛出ColumnNotFoundException

csv - 如何以不同的架构将csv文件导入到hbase表中