複合列 (Astyanax 1.0.6 クライアントを使用する Cassandra 1.1.6) を使用して、いくつかの数値を列ファミリーに挿入する際に問題が発生します。
AnnotatedCompositeSerializer<DailyPersonal> dailyPersonalSerializer
= new AnnotatedCompositeSerializer<DailyPersonal>(DailyPersonal.class);
ColumnFamily<Long, DailyPersonal> CF_DAILY_PERSONAL
= new ColumnFamily<Long, DailyPersonal>("daily_personal",
LongSerializer.get(), dailyPersonalSerializer);
DailyPersonal dailyPersonalSteps = new DailyPersonal(new LocalDate(2012, 1, 1).toDate(), 12348L, "steps");
DailyPersonal dailyPersonalDistance = new DailyPersonal(new LocalDate(2012, 1, 1).toDate(), 12348L, "distance");
MutationBatch m = keyspace.prepareMutationBatch();
m.withRow(CF_DAILY_PERSONAL, 1L)
.putColumn(dailyPersonalSteps, 333, null)
;
m.withRow(CF_DAILY_PERSONAL, 1L)
.putColumn(dailyPersonalDistance, 444, null)
;
DailyPersonal は次のように定義されます。
public class DailyPersonal {
@Component(ordinal = 0)
private Date logDate;
@Component(ordinal = 1)
private Long userId;
@Component(ordinal = 2)
private String field;
...
}
列ファミリーの定義:
CREATE TABLE daily_personal (
program_id bigint,
log_date timestamp,
user_id bigint,
distance int,
steps int,
PRIMARY KEY (program_id, log_date, user_id)
);
いくつかの値を挿入するときに問題が発生します。つまり、444 は失敗しますが、333 は問題なく動作します。依存関係を理解できませんが、多くの値 [0; で失敗するようです。1500]。エラー メッセージは次のようになります。
com.netflix.astyanax.connectionpool.exceptions.BadRequestException: BadRequestException: [host=127.0.0.1(127.0.0.1):9160, latency=19(40), attempts=1] InvalidRequestException(why:(String didn't validate.) [demodb][daily_personal][2012-01-01 00:00:00+0300:12348:distance] failed validation)
失敗する明確な理由はわかりません。私のコードが正しいかどうか、または環境/ライブラリに問題があるかどうかを誰かに教えてもらえますか?