计算数百万列时的Cassandra问题

时间:2011-10-09 09:22:43

标签: java cassandra

我在列中插入列,并通过cassandra-cli检查它们的数量:

[default@CassandraExample] count admins[ascii('0')]; 492506 columns [default@CassandraExample] count admins[ascii('0')]; 531375 columns [default@CassandraExample] count admins[ascii('0')]; 556985 columns [default@CassandraExample] count admins[ascii('0')]; 615568 columns [default@CassandraExample] count admins[ascii('0')]; 740790 columns [default@CassandraExample] count admins[ascii('0')]; 794993 columns [default@CassandraExample] count admins[ascii('0')]; 1008291 columns [default@CassandraExample] count admins[ascii('0')]; 1080951 columns [default@CassandraExample] count admins[ascii('0')]; null

正如你所看到的,后来计数打印为null,现在它一直打印为null(当我想计算admins [0]时)。我试图将最大堆大小调整为1500M(我不能给出更多我不知道为什么(Java打印错误)),并配置其他选项,但它仍然不起作用。

造成这种情况的可能原因是什么?

1 个答案:

答案 0 :(得分:3)

我将在这里做出许多有根据的猜测:

  • 你正在运行一个32位的java,这就是为什么你不能为它的堆分配更多的内存
  • 您在Cassandra的系统日志中收到错误
  • 您没有运行Cassandra 1.0,它会在内部分页大量请求(https://issues.apache.org/jira/browse/CASSANDRA-3068)

所以我的推荐是:

  • 如果您坚持做大量计算,请升级到1.0,但
  • 巨大的数量永远不会很快,所以请考虑使用denormalized counter代替
  • 如果您想继续对旧版本进行故障排除,请粘贴Cassandra的system.log中的异常并启用cli上的调试开关