【问题标题】:Create table statement using Phoenix with column family name for dynamic columns使用 Phoenix 和动态列的列族名称创建表语句
【发布时间】:2023-03-20 21:48:01
【问题描述】:

我是使用 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

我在这里错过了什么?

【问题讨论】:

  • DEF 列在表 TEST 中不存在。
  • 是的,这些是动态列。

标签: hbase phoenix


【解决方案1】:

我只是在研究这片凤凰。也许你可以查看这个网址

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

对于您的问题,这里的问题应该是:您没有定义列族“d”,但您在 upsert 中使用了它,甚至使用了两个列族(“e”)。在创建表脚本中,您应该至少定义一个列族“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);

我测试它有效。

【讨论】:

    猜你喜欢
    • 2014-04-28
    • 2022-11-15
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多