如何获取Cassandra 3.3中的原始行内容

时间:2016-02-26 16:16:01

标签: cassandra cassandra-cli

我正在使用Cassandra 3.3和CQL来创建下表

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中。为此,我看到人们正在使用cassandra-cli(list命令),但这在3.3(3.0之后)中不再可用

有没有办法可以用来查询cassandra,看看每行是如何存储的?我正在寻找一些工具或任何方法来从CQL ...

谢谢

PS:在cassandra 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)

1 个答案:

答案 0 :(得分:1)

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

没有关于此主题的官方文档,但您可以查看源代码中的几个位置,以全面了解数据在磁盘上的放置方式

UnfilteredSerializerhttps://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