使用 Phoenix 和动态列的列族名称创建 table 语句

Create table statement using Phoenix with column family name for dynamic columns

我是 Phoenix 和 HBase 的初学者。

我无法将 phoenix 的 UPSERT 语句与动态列的列族名称一起使用。

我的创建 table 语句:

CREATE TABLE TEST(
A UNSIGNED_LONG NOT NULL,
B VARCHAR NOT null,
C UNSIGNED_LONG NOT null,
CONSTRAINT rowkey PRIMARY KEY(A,B,C)
)

我的更新语句:

UPSERT INTO TEST(A,B,C,d.D INTEGER,d.E INTEGER,e.F INTEGER) VALUES (30000,alice,200000,1,1,1)

错误信息:

ERROR 1001 (42I01): Undefined column family. familyName=D.null

我在这里错过了什么?

我刚在研究这篇phoenix.Maybe你可以复习一下url

http://phoenix.apache.org/dynamic_columns.html

对于你的问题,这里的问题应该是:你没有定义一个列族"d"但是你在upsert中使用了它,你甚至使用了两个列族("e")。在创建 table 脚本你至少应该定义一个列族 "d"(我知道如果你没有定义,有一个默认的列族“0”),phoenix 可以支持动态列插入,但我不支持确定它可以支持动态列族 insert.So 我认为代码应该是:

CREATE TABLE TEST(
A UNSIGNED_LONG NOT NULL,
B VARCHAR NOT null,
C UNSIGNED_LONG NOT null,
"d".D integer
CONSTRAINT rowkey PRIMARY KEY(A,B,C)
)

你可以像这样更新:

UPSERT INTO TEST(A,B,C,"d".D,"d".E INTEGER,"d".f INTEGER) VALUES (30000,'alice',200000,1,1,1);

我测试它有效。