1

hector api を使用して複合列から読み取り中に問題に直面しています。

私の列ファミリー:

create column family step_wise_stats_cc with key_validation_class = 'CompositeType(UTF8Type, UTF8Type)' and comparator = UTF8Type and default_validation_class = UTF8Type;

データ: 行キー:{TYPE-1,SUB-TYPE-1}
列:名前1:値1

私はこのようにそれを照会しています:

Cluster cluster = HFactory.getOrCreateCluster("cls1", "localhost:9160");;
Keyspace keyspace = HFactory.createKeyspace("ks1",cluster);;
Serializer se = StringSerializer.get();

Composite start = new Composite();
start.addComponent(0, "TYPE-1", ComponentEquality.EQUAL);
start.addComponent(1, "SUB-TYPE-1", ComponentEquality.EQUAL);
Composite end = new Composite();
end.addComponent(0, "TYPE-1", ComponentEquality.GREATER_THAN_EQUAL);
start.addComponent(1, "SUB-TYPE-1", ComponentEquality.GREATER_THAN_EQUAL);

SliceQuery<String, Composite, String> sliceQuery = HFactory.createSliceQuery(keyspace, se, CompositeSerializer.get(), se);;
sliceQuery.setColumnFamily("cf1");
sliceQuery.setKey("TYPE-1");
sliceQuery.setRange(start, start, false, 999);

QueryResult<ColumnSlice<Composite, String>> qr = sliceQuery.execute();

しかし、例外を下回っています: me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestExc eption (理由: コンポーネント 0 の値を読み取るのに十分なバイト数がありません)

何か助けはありますか?

4

1 に答える 1

1

行キーは CompositeType ですが、行キーを「TYPE-1」に設定しています。これが、Cassandra がエラーを出す理由です。

スライス クエリは、特定の行の列の範囲を返します。行キーの複合を指定するか、サブタイプを列に移動して列を複合にすることでデータ モデルを変更する必要があります。

于 2013-06-19T07:18:23.210 に答える