2011-09-07 36 views
3

我可以在哪裏找到這個樣本?如何爲列族定義組合鍵,然後使用Hector來引用它?

我的大部分代碼都使用ColumnFamilyTemplate對數據記錄執行CRUD,請參見下文。一旦我定義了組合鍵,我仍然可以使用ColumnFamilyTemplate訪問具有組合鍵的數據嗎?

private static final ColumnFamilyTemplate<UUID, String> template = 
    new ThriftColumnFamilyTemplate<UUID, String>(
     Bootstrap.keyspace, 
     "User", 
     UUIDSerializer.get(), 
     StringSerializer.get(), 
     HFactory.createMutator(Bootstrap.keyspace, UUIDSerializer.get())); 
+0

我四處搜索,沒有發現任何有用的東西,有沒有人可以幫助解決這個問題? – tom

回答

3

應該使用哪個API來執行記錄上的CRUD; CompositeType(或DynamicCompositeType)只是另一種類型(例如類似於UUID),它具有相應的序列化程序(CompositeSerializer)。所以,你的例子可能成爲:

private static final ColumnFamilyTemplate<Composite, String> template = 
new ThriftColumnFamilyTemplate<Composite, String>(
    Bootstrap.keyspace, 
    "User", 
    CompositeSerializer.get(), 
    StringSerializer.get(), 
    HFactory.createMutator(Bootstrap.keyspace, CompositeSerializer.get())); 

只有額外的將是使用模板之前創建複合(假設UUID &長的複合材料):

Composite key = new Composite(); 
key.addComponent(someUUID, UUIDSerializer.get()); 
key.addComponent(someLong, LongSerializer,get()); 
ColumnFamilyResult<Composite,String> result = template.queryColumns(key); 

時,取結果,一個辦法讓密鑰的組成部分:

myUUID = result.getKey().get(0, UUIDSerializer.get()); 
myLong = result.getKey().get(1, LongSerializer,get()); 
相關問題