使用phoenix为动态列创建列族名称的表语句

mu0hgdu0  于 2021-06-10  发布在  Hbase
关注(0)|答案(1)|浏览(910)

我是初学者在使用Phoenix以及hbase。
我无法将带有列族名称的phoenix的upsert语句用于动态列。
我的create 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

我错过了什么?

9jyewag0

9jyewag01#

我只是在研究Phoenix城的这片。也许你可以看看这个网址
http://phoenix.apache.org/dynamic_columns.html
对于您的问题,这里的问题应该是:您没有定义列族“d”,但在upsert中使用了它,甚至使用了两个列族(“e”)。在create table脚本中,您至少应该定义一个列族“d”(我知道,如果您没有定义,则会有一个默认的列族“0”),phoenix可以支持动态列插入,但我不确定它是否支持动态列族插入。因此我认为代码应该是:

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);

我测试它是否有效。

相关问题