加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

nosql – Cassandra Super Column Family Schema Creation

发布时间:2020-12-13 13:28:58 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个超级列系列,它将复制这样的结构. { 'hd': '2008/12/12 10:03': { metric1: 'blah',metric2: 'blah'} '2008/12/2 9:03': { metric1: 'blah',metric2: 'blah'} 'cpu': '2008/12/12 10:03': { metric1: 'blah',metric2: 'blah'}} 我目前的尝
我正在尝试创建一个超级列系列,它将复制这样的结构.

{ 'hd':
    '2008/12/12 10:03': { metric1: 'blah',metric2: 'blah'}
    '2008/12/2 9:03': { metric1: 'blah',metric2: 'blah'}
   'cpu':
    '2008/12/12 10:03': { metric1: 'blah',metric2: 'blah'}
}

我目前的尝试看起来像这样:

create column family Timestep
with column_type = 'Super'
and comparator = 'AsciiType'
and subcomparator = 'DateType'
and default_validation_class = 'DoubleType'
and key_validation_class = 'AsciiType'
and column_metadata = [
    {column_name : metric1,validation_class : DoubleType}
    {column_name : metric2,validation_class : DoubleType}
];

但是,如果我尝试在cassandra-cli中运行以上内容:

java.lang.RuntimeException: org.apache.cassandra.db.marshal.MarshalException: unable to coerce 'open' to a  formatted date (long)

也许我不理解超级列系列是什么,但任何帮助都会很棒.

谢谢.

解决方法

强烈建议您不要使用超级列,尤其是在新设计中.它们从来没有出现过问题,现在它们已被弃用,并且更有效地被复合键所取代.

您可以在CQL 3中很好地表示您的数据,例如:

CREATE TABLE Timestep (
    hardware ascii,when timestamp,metric1 double,metric2 double,PRIMARY KEY (hardware,when)
);

或者,根据您预期的具体情况,使用它可能更有意义:

CREATE TABLE Timestep (
    hardware ascii,metricname ascii,value double,metricname,when)
) WITH COMPACT STORAGE;

有关这些如何在Cassandra中转换为存储引擎范围行的更多信息,请参见this article.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读