首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cassandra超级列系列架构创建

Cassandra超级列系列架构创建
EN

Stack Overflow用户
提问于 2012-05-19 11:43:11
回答 2查看 4.2K关注 0票数 4

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

代码语言:javascript
运行
复制
{ '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如下所示:

代码语言:javascript
运行
复制
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中运行上面的命令:

代码语言:javascript
运行
复制
java.lang.RuntimeException: org.apache.cassandra.db.marshal.MarshalException: unable to coerce 'open' to a  formatted date (long)

也许我不能正确地理解什么是超级列族,但任何帮助都是很棒的。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-20 01:37:06

强烈建议您不要使用超列,尤其是在新的设计中。它们从来都不是没有问题的,现在它们被弃用了,取而代之的是组合键。

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

代码语言:javascript
运行
复制
CREATE TABLE Timestep (
    hardware ascii,
    when timestamp,
    metric1 double,
    metric2 double,
    PRIMARY KEY (hardware, when)
);

或者,根据您期望的确切内容,使用以下命令可能更有意义:

代码语言:javascript
运行
复制
CREATE TABLE Timestep (
    hardware ascii,
    metricname ascii,
    when timestamp,
    value double,
    PRIMARY KEY (hardware, metricname, when)
) WITH COMPACT STORAGE;

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

票数 4
EN

Stack Overflow用户

发布于 2012-05-20 15:56:57

我可以知道您使用的是哪个API吗?如果是赫克托,我可能会帮你。但我个人建议你不要使用超列,因为从超列中获取子列列表是一件令人头疼的事情。此外,还有很多与性能相关的问题。此外,超级列正在被弃用。所以最好使用组合键。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10662125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档