美文网首页
Apache Phoenix(十五)新特性之动态列

Apache Phoenix(十五)新特性之动态列

作者: 我知他风雨兼程途径日暮不赏 | 来源:发表于2020-02-28 16:15 被阅读0次

总结:看似很有用,但是很少有这样的需求,而且查询时候需要知道对应的列是哪个,否则无法查询出对应的数据,这些列需要被额外的保存,这样的设计更像是之前做毁的项目,通过这种方式进行补救。
有时候预先定义好的静态模式是不可行的。相反,可以在表创建时指定列的子集,而在查询时指定其余列。从Phoenix1.2后,现在支持动态地指定列,方法是允许在SELECT语句的FROM子句中的表后面的括号中包含列定义。虽然这不是标准的SQL,但是利用HBase的后期绑定能力来提供这种类型的功能是很有用的。
举例:

SELECT eventTime, lastGCTime, usedMemory, maxMemory
FROM EventLog(lastGCTime TIME, usedMemory BIGINT, maxMemory BIGINT)
WHERE eventType = 'OOM' AND lastGCTime < eventTime - 1

在创建时,您可能只定义了事件列的一个子集,因为每个事件类型可能具有不同的属性:

CREATE TABLE EventLog (
    eventId BIGINT NOT NULL,
    eventTime TIME NOT NULL,
    eventType CHAR(3) 
    CONSTRAINT pk PRIMARY KEY (eventId, eventTime))

去更新一行和动态列:

UPSERT INTO EventLog (
    eventId, eventTime, 
    eventType, 
    lastGCTime TIME,
    usedMemory BIGINT,
    maxMemory BIGINT) 
VALUES(1, CURRENT_TIME(), ‘abc’, CURRENT_TIME(), 512, 1024);

相关文章

网友评论

      本文标题:Apache Phoenix(十五)新特性之动态列

      本文链接:https://www.haomeiwen.com/subject/serkhhtx.html