Nosql Cassandra超级列族模式创建

Nosql Cassandra超级列族模式创建,nosql,cassandra,time-series,Nosql,Cassandra,Time Series,我正在尝试创建一个超级柱族,它将复制这样的结构 { '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'} '2008/12/2 9:03': { metric

我正在尝试创建一个超级柱族,它将复制这样的结构

{ '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'}
    '2008/12/2 9: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,
    when timestamp,
    value double,
    PRIMARY KEY (hardware, metricname, when)
) WITH COMPACT STORAGE;

有关如何将这些转换为Cassandra中存储引擎范围的行的更多信息,请参阅。

我可以知道您使用的是哪种API吗? 如果是赫克托,我可能会帮你。但我个人 建议您不要使用超级列,因为,正在获取子列列表 来自超级专栏的报道令人头痛。此外,还有许多与性能相关的问题。 此外,超级列越来越不受欢迎。所以最好使用复合键