2016-02-26 97 views
1

我使用卡桑德拉3.3和CQL创建以下表如何获得的原始行内容卡桑德拉3.3

CREATE TABLE collected_data ( 
    collection_hour int, 
    source_id int, 
    entity_id int, 
    measurement text, 
    value text, 
    primary key((collection_hour),source_id,entity_id,measurement) 
); 

插入一堆值到这个表之后,我希望看到如何每一行真的存储在卡桑德拉。为此,我已经看到人们正在使用cassandra-cli(list命令),但在3.3中不可用(3.0后)

有没有一种方法可以用来查询cassandra以查看每行是如何存储?我寻找一些工具或任何方式从CQL做到这一点...

谢谢

PS:在卡桑德拉CLI人会使用的“list命令”,并得到类似以下的输出(不同的表格):

RowKey: 1 
=> (column=, value=, timestamp=1374546754299000) 
=> (column=field2, value=00000002, timestamp=1374546754299000) 
=> (column=field3, value=00000003, timestamp=1374546754299000) 

RowKey: 4 
=> (column=, value=, timestamp=1374546757815000) 
=> (column=field2, value=00000005, timestamp=1374546757815000) 
=> (column=field3, value=00000006, timestamp=1374546757815000) 
+0

可以使用Datastax DevCenter为 – TheGeorgeous

+0

我这样做使得w ith devcenter,但不幸的是我找不到一种方法来做到这一点。 DevCenter能够以.... well ..表格格式--- X行x Y列打印表格内容,而这不是我正在寻找的内容。我需要存储在Cassandra中的原始格式。我需要这个来确保我正确理解数据的存储方式......谢谢 – Mircea

回答

1

自Cassandra 3.0以来,存储引擎已被重写,因此磁盘上的布局已完全改变。

没有在这个问题上没有任何正式文件,但你可以看看源代码的几个地方有多么数据在磁盘上

UnfilteredSerializer都奠定了大图片:https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/db/rows/UnfilteredSerializer.java#L29-L71

Cell存储:https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/db/rows/Cell.java#L145-L163

ClusteringPrefixhttps://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/db/ClusteringPrefix.java#L33-L45

+0

感谢您提供快速的答案。似乎数据的存储方式确实发生了重大变化,详细信息请见http://www.datastax.com/2015/12/storage-engine-30。谢谢 – Mircea