2013-09-19 1 views
0

Мне нужно создать CompositeColumns в Cassandra ColumnFamily.RuntimeException: Неизвестный компаратор 'CompositeType'

Каждое значение столбца будет хранить что-то вроде this-

user-id column1 
123  (Column1-Value Column1-SchemaName LastModifiedDate) 

же с COLUMN2, а и других столбцов, а также. Поэтому я решил пойти что-то вроде this-

Ниже приводится описание для columns-

ByteType for Column-Value 
UTF8Type for Column-SchemaName 
DateType for LastModifiedDate 

Я создал ниже ColumnFamily как this-

create column family USER_DATA 
with key_validation_class = 'UTF8Type' 
and comparator = 'CompositeType(ByteType,UTF8Type,DateType)' 
and default_validation_class = 'UTF8Type' 
and gc_grace = 86400 
and column_metadata = [ {column_name : 'lmd', validation_class : DateType}]; 

Позвольте мне знать, если это правильный способ создания вышеупомянутого семейства столбцов?

Но как только я попытаюсь выполнить вышеупомянутый столбец, я всегда получаю следующую ошибку.

[[email protected]]  create column family USER_DATA 
...   with key_validation_class = 'UTF8Type' 
...   and comparator = 'CompositeType(ByteType,UTF8Type,DateType)' 
...   and default_validation_class = 'UTF8Type' 
...   and gc_grace = 86400 
...   and column_metadata = [ {column_name : 'lmd', validation_class : DateType}]; 

java.lang.RuntimeException: Unknown comparator 'CompositeType(ByteType,UTF8Type,DateType)'. Available functions: bytes, integer, long, int, lexicaluui 
d, timeuuid, utf8, ascii, double, countercolumn. 

Может ли кто-нибудь помочь мне с этим?

Обновление: -

Я только что узнал об этой ошибке, я забыл добавить дополнительные s в ByteType.

Ниже ColumnFamily-

create column family USER_DATA 
with key_validation_class = 'UTF8Type' 
and comparator = 'CompositeType(BytesType,UTF8Type,DateType)' 
and default_validation_class = 'UTF8Type' 
and gc_grace = 86400 
and column_metadata = [ {column_name : 'lmd', validation_class : DateType}]; 

Ниже ошибка я получил ..

[[email protected]]  create column family USER_DATA 
...   with key_validation_class = 'UTF8Type' 
...   and comparator = 'CompositeType(BytesType,UTF8Type,DateType)' 
...   and default_validation_class = 'UTF8Type' 
...   and gc_grace = 86400 
...   and column_metadata = [ {column_name : 'lmd', validation_class : DateType}]; 

java.lang.RuntimeException: org.apache.cassandra.db.marshal.MarshalException: cannot parse 'lmd' as hex bytes 

ответ

1

Это должно быть BytesType, не ByteType:

CompositeType(BytesType,UTF8Type,DateType) 

Другая проблема что lmd не является допустимым именем столбца для сравнения r CompositeType(BytesType,UTF8Type,DateType). Допустимым именем является, например, aa00:string:2013-09-19.

+0

Моя ошибка. Я просто поймаю эту ошибку. Но после внесения изменений я получаю еще одно исключение. Я тоже редактировал свой вопрос. – AKIWEB

+0

Я обновил свой ответ. – Richard

Смежные вопросы