2013-02-22 16 views
5

Tôi đang sử dụng mã này cho lấy user_id & user_codecột ngẫu nhiên lấy trong cassandra

Keyspace keyspace = HFactory.createKeyspace("test", cluster); 
CqlQuery<String,String,ByteBuffer> cqlQuery = new CqlQuery<String,String,ByteBuffer>(keyspace, stringSerializer, stringSerializer, new ByteBufferSerializer()); 
cqlQuery.setQuery("select user_id,user_code from User"); 
QueryResult<CqlRows<String,String,ByteBuffer>> result = cqlQuery.execute(); 
Iterator iterator = result.get().iterator(); 
while(iterator.hasNext()) { 
    Row<String, String, ByteBuffer> row = (Row<String, String, ByteBuffer>) iterator.next(); 
    System.out.println("\nInserted data is as follows:\n" + row.getColumnSlice().getColumns().get(0).getValue().getInt()); 
    System.out.println("\nInserted data is as follows:\n" + Charset.forName("UTF-8").decode(row.getColumnSlice().getColumns().get(1).getValueBytes())); 
} 

Bây giờ vấn đề nằm ở đây mà tôi đang chuyển đổi các lĩnh vực theo loại hình cụ thể của họ

gì nếu truy vấn đi ngẫu nhiên? Làm thế nào để xử lý kịch bản đó?

+0

Plz cố gắng sử dụng BufferSerialezer khác thay vì ByteBufferSerializer, thông qua u này sẽ luôn lấy tất cả dữ liệu trong luồng byte, cố gắng trích xuất dữ liệu từ cơ sở dữ liệu ở định dạng thực tế mà nó được lưu trữ. –

Trả lời

1

Truy vấn CQL được trả về với siêu dữ liệu về các cột chúng chứa, tương tự như kết quả JDBC.

Tôi không biết liệu Hector có hiển thị thông tin này hay không. Đối với CQL, một lựa chọn tốt hơn sẽ là trình điều khiển CQL thuần túy mới ở đây: https://github.com/datastax/java-driver

+0

Bạn đã làm cho nó hoạt động như thế nào? Hãy xem [gist của tôi] (https://gist.github.com/shehaaz/5279566) ... Đây là một phiên Cassandra Cluster ... chỉ được gọi là Cassandra mới(); Không khó ... nó có phải với cổng? tại sao tôi không thể đặt nó vào localhost: 9160 .... Trong ProtocolOptions, DEFAULT_PORT được đặt thành 9042 ... tại sao vậy? Cảm ơn! :) – Shehaaz