我是初学者,使用Phoenix和HBase。
我无法使用带有列族名称的phoenix的UPSERT语句作为动态列。
我的创建表语句:
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
我在这里缺少什么?
1 个答案:
答案 0 :(得分:0)
我正在研究这片凤凰。也许你可以查看这个网址
http://phoenix.apache.org/dynamic_columns.html
对于你的问题,这里的问题应该是:你没有定义一个列族“d”,但你在upsert中使用它,你甚至使用了两个列族(“e”)。在create table脚本中你至少应该定义列系列“d”(我知道有一个默认的列族“0”,如果你没有定义),凤凰可以支持动态列插入但我不确定它是否可以支持动态列族插入。所以我认为代码应该是:
创建表测试(
一个UNSIGNED_LONG非空,
B VARCHAR NOT null,
C UNSIGNED_LONG非null,
“d”.D整数
CONSTRAINT rowkey PRIMARY KEY(A,B,C)
)
你可以像这样upsert:
UPSERT INTO TEST(A,B,C,“d”。D,“d”.E INTEGER,“d”.f INTEGER)VALUES(30000,'alice',200000,1,1,1);
我测试它的工作原理。