2012-05-19 4 views
4

Я пытаюсь создать семейство суперколонн, которое будет реплицировать структуру, подобную этой.Создание схемы семейства суперколонков Cassandra

{ '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} 
]; 

Но если я пытаюсь запустить выше в Кассандры кли:

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

Может быть, я не понимая, что супер семья столбцов должным образом, но любая помощь была бы потрясающей.

Спасибо.

ответ

4

Это очень сильно рекомендуется, чтобы вы не использовали суперколонны, особенно в новом дизайне. Они никогда не были без проблем, и теперь они устарели и гораздо более умело заменены составными клавишами.

Ваши данные могут быть хорошо представлены, как это в 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; 

См. this article для получения дополнительной информации о том, как они переводится в хранилище большого количества строк в Кассандре.

2

Могу ли я узнать, какой API u используется? Если это Гектор, то я могу вам помочь. Но я лично рекомендую вам не использовать суперколонку, потому что, получая дополнительный список столбцов из супер колонки, есть головная боль. Кроме того, есть много проблем, связанных с производительностью. Кроме того, супер столбцы становятся устаревшими. Так что лучше идти с составными клавишами.