使用 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);
我测试它有效。
我是 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);
我测试它有效。