我正在使用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)
答案 0 :(得分:1)
自Cassandra 3.0以来,存储引擎已被重写,因此磁盘布局已完全改变。
没有关于此主题的官方文档,但您可以查看源代码中的几个位置,以全面了解数据在磁盘上的放置方式
UnfilteredSerializer
:https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/db/rows/UnfilteredSerializer.java#L29-L71
ClusteringPrefix
:https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/db/ClusteringPrefix.java#L33-L45