0

Cassandra ColumnFamily に CompositeColumns を作成する必要があります。

各列の値には、次のようなものが保存されます-

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

column2 も他の列も同様です。だから私はこのようなもので行くことにしました-

以下は、列の説明です-

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

このような以下の列ファミリを作成しました-

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

これが上記の列ファミリーを作成する正しい方法であるかどうか教えてください。

しかし、上記の列を実行しようとするとすぐに、常に以下のエラーが発生します。

[default@userks]     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}];

以下は私が得たエラーです..

[default@beprofileks]     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
4

1 に答える 1

1

BytesTypeではなく、である必要がありますByteType

CompositeType(BytesType,UTF8Type,DateType)

もう 1 つの問題はlmd、コンパレータの有効な列名ではないことですCompositeType(BytesType,UTF8Type,DateType)。有効な名前は、たとえばaa00:string:2013-09-19.

于 2013-09-19T19:32:59.230 に答える