cassandracassandra-cli

cassandra-cli 'list' in cassandra 3.0


I want to view the "rowkey" with its stored data in cassandra 3.0. I know, the depreciated cassandra-cli had the 'list'-command. However, in cassandra 3.0, I cannot find the replacement for the 'list'-command. Anyone knows the new cli-command for 'list'?


Solution

  • You can use sstabledump utility as @chris-lohfink suggested. How to use it? Create keyspace, table in it populate some data:

    cqlsh> CREATE KEYSPACE IF NOT EXISTS minetest WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
    
    cqlsh> CREATE TABLE object_coordinates (
       ... object_id int PRIMARY KEY,
       ... coordinate text
       ... );
    
    cqlsh> use minetest;
    
    cqlsh:minetest> insert into object_coordinates (object_id, coordinate) values (564682,'59.8505,34.0035');
    cqlsh:minetest> insert into object_coordinates (object_id, coordinate) values (1235,'61.7814,40.3316');
    cqlsh:minetest> select object_id, coordinate, writetime(coordinate) from object_coordinates;
    
     object_id | coordinate      | writetime(coordinate)
    -----------+-----------------+-----------------------
          1235 | 61.7814,40.3316 |      1480436931275615
        564682 | 59.8505,34.0035 |      1480436927707627
    
    (2 rows)
    

    object_id is a primary (partition key) key, coordinate is clustering one.

    Flush changes to disk:

    # nodetool flush
    

    Find sstable on disk and analyze it:

    # cd /var/lib/cassandra/data/minetest/object_coordinates-e19d4c40b65011e68563f1a7ec2d3d77
    
    # ls
    backups  mc-1-big-CompressionInfo.db  mc-1-big-Data.db  mc-1-big-Digest.crc32  mc-1-big-Filter.db  mc-1-big-Index.db  mc-1-big-Statistics.db  mc-1-big-Summary.db  mc-1-big-TOC.txt
    
    # sstabledump mc-1-big-Data.db
    [
      {
        "partition" : {
          "key" : [ "1235" ],
          "position" : 0
        },
        "rows" : [
          {
            "type" : "row",
            "position" : 18,
            "liveness_info" : { "tstamp" : "2016-11-29T16:28:51.275615Z" },
            "cells" : [
              { "name" : "coordinate", "value" : "61.7814,40.3316" }
            ]
          }
        ]
      },
      {
        "partition" : {
          "key" : [ "564682" ],
          "position" : 43
        },
        "rows" : [
          {
            "type" : "row",
            "position" : 61,
            "liveness_info" : { "tstamp" : "2016-11-29T16:28:47.707627Z" },
            "cells" : [
              { "name" : "coordinate", "value" : "59.8505,34.0035" }
            ]
          }
        ]
      }
    ]
    

    Or with -d flag:

    # sstabledump mc-1-big-Data.db -d
    [1235]@0 Row[info=[ts=1480436931275615] ]:  | [coordinate=61.7814,40.3316 ts=1480436931275615]
    [564682]@43 Row[info=[ts=1480436927707627] ]:  | [coordinate=59.8505,34.0035 ts=1480436927707627
    

    Output says that 1235 and 564682 and saves coordinates in those partitions.

    Link to doc http://www.datastax.com/dev/blog/debugging-sstables-in-3-0-with-sstabledump

    PS. sstabledump is provided by cassandra-tools package in ubuntu.