Is there a way to discover Cassandra CQL table structure?

Vinnie picture Vinnie · Aug 7, 2013 · Viewed 18.2k times · Source

Let's say I use CQL to define this table.

CREATE TABLE songs (
    id uuid PRIMARY KEY, 
    title text,
    album text, 
    artist text, 
    tags set<text>, 
    data blob);

How can other developers (or myself after a few weeks) (re)discover the layout of this table?

I'm thinking of an equivalent to the MySQL DESCRIBE {tablename} command.

[EDIT]

I see there is a DESCRIBE method in Cassandra's command line interface (CLI), but upon using it, it states that it doesn't include information on CQL tables in its results.

Answer

Lyuben Todorov picture Lyuben Todorov · Aug 7, 2013

You should try the cqlsh tool which will show you exactly what you want:

lyubent@vm: ~$ ./cqlsh 
cqlsh> use system;
cqlsh> describe columnfamily local;

CREATE TABLE local (
  key text PRIMARY KEY,
  bootstrapped text,
  cluster_name text,
  cql_version text,
  data_center text,
  gossip_generation int,
  host_id uuid,
  partitioner text,
  rack text,
  release_version text,
  schema_version uuid,
  thrift_version text,
  tokens set<text>,
  truncated_at map<uuid, blob>
) WITH
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='information about the local node' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=0 AND
  read_repair_chance=0.000000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'SnappyCompressor'};

EDIT
Although great at the time the blog i linked is ood. To run cqlsh in windows:

  • first install python 2.7.x (not python 3!) download
  • Add python to your path (as a new environment variable)
  • Run the setup by navigating to C:\dir\to\cassandra\pylib in a cmd prompt and executing the below line:

    python setup.py install
    

GZ. Now you have cqlsh on windows.