我正在尝试创建一个超级柱族,它将复制这样的结构。
{ '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'}
}
我当前的try如下所示:
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)
也许我不能正确地理解什么是超级列族,但任何帮助都是很棒的。
谢谢。
发布于 2012-05-20 01:37:06
强烈建议您不要使用超列,尤其是在新的设计中。它们从来都不是没有问题的,现在它们被弃用了,取而代之的是组合键。
在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中存储引擎范围的行的更多信息,请参见this article。
发布于 2012-05-20 15:56:57
我可以知道您使用的是哪个API吗?如果是赫克托,我可能会帮你。但我个人建议你不要使用超列,因为从超列中获取子列列表是一件令人头疼的事情。此外,还有很多与性能相关的问题。此外,超级列正在被弃用。所以最好使用组合键。
https://stackoverflow.com/questions/10662125
复制相似问题