我正在開發一個使用cassandra作爲數據庫的新產品。現在安裝在單個Ubuntu 13.10開發筆記本電腦核心i7上。我有一個列家族和一個查詢。這個在cqlsh中執行的查詢給出了33267行。執行我的java程序,使用datastax Java驅動程序2.0,一些處決給出正確的行,其他人鑽進一個無限循環一次又一次地重複相同的行:DataStax重複行的Java驅動程序循環
while (!rs.isExhausted()) {
Row row = rs.one();
long hora = row.getDate(1).getTime();
String clave = row.getString(0);
List<Long> data = row.getList(2, Long.class);
ordenados.put(hora, new Object[]{clave, data.get(0)/100000000.0, data.get(1)});
contador2 +=1;
if (Math.floor(contador2/1000.0) == contador2/1000.0) {
System.out.println("sitio "+ contador2+ " "+clave+ " "+hora);
}
}
如果在分析應用程序,我看到鎖爭在新的I/O工作線程之間,98%的時間花在sun.nio.ch.EPollArrayWrapper.poll方法上。 有人遇到過這個問題並知道解決方案嗎? 有人可以直接下載鏈接來下載cassandra-driver-core-2.0.0.src.jar,這樣我可以通過源代碼調試錯誤並向datastax報告? 這是一項令人興奮的技術,但這是我職業生涯中第一次使用DB來給我如此不可靠的行爲。順便說一句:原來的查詢有一個我刪除的順序。按順序,我得到了這個異常: 線程「main」中的異常com.datastax.driver.core.exceptions.InvalidQueryException:無法使用分區鍵上的ORDER BY和IN限制對查詢進行分頁;您必須刪除ORDER BY或IN和排序客戶端,或者禁用此查詢的分頁 當昨天在類似查詢和cqlsh上工作時,它在沒有添加訂單的問題的情況下工作。我只是談論這個問題,因爲兩者都有關係。 Regards
感謝您的回覆。我在ubuntu 13.10上使用cassandra 2.0.6。我已經閱讀了更多關於自動分頁的知識,並且禁用了它,這已經成爲了訣竅:'// ResultSet rs = cassandra.execute(query); Statement stmt = new SimpleStatement(query); stmt.setFetchSize(Integer.MAX_VALUE); ResultSet rs = cassandra.execute(stmt); (!rs.isExhausted()){ – Rogelio