2012-04-11 21 views
7

Tôi mới ở cassandra và hector.Truy xuất tất cả các cột của một hàng trong Cassandra sử dụng Hector Client

Tôi muốn truy xuất tất cả các cột của một hàng trong Cassandra bằng hector. Sau khi một số thăm dò trên web tôi đã nhận một số mã mẫu, nhưng nó đòi hỏi phạm vi hoặc cột tên, như,

SliceQuery<String,String,String> query = HFactory.createSliceQuery(keyspace, ss, ss, ss); 
    query.setColumnFamily("MyColumnFamily").setKey("S001").setRange(null, null, false, 100); 
    QueryResult<ColumnSlice<String,String>> result = query.execute(); 
    for (HColumn<String, String> column : result.get().getColumns()) { 
     System.out.println(column.getName() +"::"+ column.getValue()); 
    } 

Ở đây tôi cần phải thiết lập cấp ở setRange() phương pháp mà lấy cột trong phạm vi này. Chúng tôi cũng có thể thiết lập bắt đầu và kết thúc trong phương pháp này, nhưng điều này cũng sẽ cung cấp cho các cột của phạm vi cụ thể. Nếu tôi không thiết lập phạm vi thì tôi cần đặt tên cột là mảng.

Có cách nào để nhận tất cả các cột của hàng cụ thể không? Tôi không muốn đặt tên dải ô hoặc cột, tôi chỉ muốn tất cả các cột của một hàng. bởi vì trong các cột ứng dụng của tôi không được xác định trước.

Hoặc có cách nào để lấy tổng số cột của một hàng để tôi có thể đặt nó trong phương thức setRange() không?

Cảm ơn.

Trả lời

10

Cách thực hiện việc này cho các hàng hơi nhỏ là sử dụng phương thức setRange() chính xác cách thức nó đang được sử dụng trong ví dụ bạn đã dán. Nếu bạn đặt tham số bắt đầu và kết thúc của dải ô thành null, thì phạm vi tìm nạp từ toàn bộ hàng.

Điều duy nhất bạn cần giải thích tại thời điểm đó là giới hạn. Trong ví dụ bạn đã dán giới hạn được đặt thành 100, do đó truy vấn sẽ không trả về hơn 100 cột. Bạn có thể đặt giới hạn thành một số rất lớn (lớn hơn số lượng cột có thể có) nếu bạn muốn luôn truy xuất tất cả các cột trong một hàng nhưng đây là không phải là thường là một ý tưởng hay. Thay vào đó bạn có thể muốn tạo một ColumnSliceIterator, cho truy vấn phạm vi, sẽ cung cấp cho bạn một giao diện trình lặp cho hàng và cho phép bạn lặp qua toàn bộ hàng mà không truy vấn quá nhiều cột cùng một lúc. Xem ví dụ trong 'Cột Lặp lại' ở cuối trang này:

https://github.com/rantav/hector/wiki/Getting-started-%285-minutes%29