2011-11-07 35 views
2

我得到了一個超級列族:赫克託querySuperColumn不匹配countSubColumns

Logger { 
    superKey : { 
     nameKey : {name1:val1, name2:val2, ..., name8945:val8945} 
    } 
} 

下面是一個代碼:

ThriftSuperCfTemplate<String, String, String> stringKeyTemplate = 
      new ThriftSuperCfTemplate<String, String, String> 
      (keyspace, LOGGER_COLUMN_FAMILY, 
      StringSerializer.get(), StringSerializer.get(), 
      StringSerializer.get()); 

    int count = stringKeyTemplate.countSubColumns(NAME_KEY, SUPER_KEY); //1 

    SuperCfResult<String, String, String> nameRow = 
      stringKeyTemplate.querySuperColumn(NAME_KEY, SUPER_KEY); 

    Collection<String> names = nameRow.getColumnNames(); //2 

    Assert.assertTrue(names.size()==count); //3 

我所試圖做的是獲取來自nameKey列所有列名家庭,但它只返回前7個名字{name1, name2,..., name7}(第2行),但計數返回8945(第1行)。並且斷言在第3行失敗...

+0

這是什麼版本的hector?在SC的結果檢索周圍,1.0.1之前的版本和0.8.x的早期版本中存在一些錯誤。 – zznate

+0

我正在使用1.0-1版本。 –

回答

0

我發現這隻能在我無法手動生成的特定數據上重現。但是我發現我的情況下,解決方法:

int count = stringKeyTemplate.countSubColumns(NAME_KEY, SUPER_KEY); //1 

    SuperSliceQuery<String, String, String, String> query = 
      HFactory.createSuperSliceQuery(keyspace, StringSerializer.get(), 
      StringSerializer.get(), StringSerializer.get(), 
      StringSerializer.get()); 

    query.setColumnFamily(COLUMN_FAMILY); 
    query.setKey(NAME_KEY); 
    query.setRange(SUPER_KEY, SUPER_KEY, false, 1); 

    QueryResult<SuperSlice<String, String, String>> result = query.execute(); 


    Collection<String> names = null; 
    names = result.get().getColumnByName(SUPER_KEY).getColumns(); //2 
    Assert.assertTrue(names.size()==count); //3 
1

在GH我不能重現這個對當前提示: https://github.com/rantav/hector/commit/1aa93e78257e86dfc73390cb9c4db52d8ed29a69

我沒有想太多1.0.1版本和主站之間改變了這裏。如果您可以嘗試從主幹更新到最新版本,並查看問題是否「消失」,我會進一步調查。另外,你在運行什麼版本的Cassandra?這只是週末,但它可能不是原因:https://issues.apache.org/jira/browse/CASSANDRA-3446

服務器上是否有任何錯誤日誌?設置StorageProxy的日誌記錄級別進行調試,並確保線路上的所有內容都正確(調整日誌記錄級別的詳細信息:http://www.datastax.com/docs/1.0/configuration/logging_options)。

相關問題