我遇到了Java堆大小问题,所以想检查cassandra中列的大小。我在内存中读了许多列到Java中。
感谢您的帮助
答案 0 :(得分:0)
我认为没有任何内置方法可以在不检索列并直接检查大小的情况下执行此操作。
当最初写入值时,您需要将每列的大小存储在另一个列中。
您可以在同一行中使用类似命名的列,因此您最终会得到与现在相同的行数,但每行的列数会增加一倍)
row : col1 col1size col2 col2size
<data> <size> <data> <size>
或另一行中具有相同名称的列,因此您最终会获得两倍的行数,但与您现在拥有的列数相同。)
row1 : col1 col2
<data> <data>
row1sizes : col1 col2
<size> <size>
更新以解决注释:要在写入之前查找列的大小,客户端可以将对象序列化为字节数组,然后检查数组的大小:
String s = "foo";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(s);
System.out.println("Size="+baos.toByteArray().length);