2012-06-25 37 views
5

Tôi có một gia đình cột AllLog tạo màChèn cột cassandra gia đình với tổng hợp quan trọng

create column family LogData 
    with column_type = 'Standard' 
    and comparator = 'CompositeType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)' 
    and default_validation_class = 'UTF8Type' 
    and key_validation_class = 'CompositeType(UTF8Type,UTF8Type)'; 

nhưng khi tôi sử dụng mutator để chèn:

String key0 = "key0"; 
    String key1 = "key1"; 

    Composite compositeKey = new Composite(); 
    compositeKey.addComponent(key0, StringSerializer.get()); 
    compositeKey.addComponent(key1, StringSerializer.get()); 

    // add 
    mutator.addInsertion(compositeKey, columnFamilyName, HFactory.createColumn("name", "value")); 
    mutator.execute(); 

luôn thông qua ngoại lệ:

me.prettyprint.hector.api.exceptions.HInvalidRequestException: 
InvalidRequestException(why:Not enough bytes to read value of component 0) 

Xin vui lòng một số giúp tôi, sai lầm của tôi ở đâu trong mã này?

Trả lời

2

Giản đồ chỉ định trình so sánh dưới dạng loại Hỗn hợp, nhưng việc chèn tạo cột bằng một chuỗi đơn ("tên").

+0

vâng tôi biết điều đó, nhưng tôi tự hỏi rằng: có bất kỳ giải pháp nào mà tôi có thể tạo một bảng có khóa tổng hợp và các cột khác sử dụng loại UTF8 ???? tôi thử nó trong cql3 là okie nhưng trong hector, tôi không thể chèn dữ liệu vào bảng như vậy :(:( –

+0

Không chắc chắn những gì bạn đang yêu cầu ở đây ... với lược đồ đã chỉ định, bạn nên cập nhật mã để createColumn sử dụng Tên hỗn hợp, sửa đổi lược đồ để làm cho trình so sánh utf8. – libjack

Các vấn đề liên quan