cassandra-cli 'список' в cassandra 3.0

Я хочу просмотреть «rowkey» с сохраненными данными в cassandra 3.0. Я знаю, что в устаревшей cassandra-cli была команда list. Однако в cassandra 3.0 я не могу найти замену команде «список». Кто-нибудь знает новую cli-команду для списка?


person nimo23    schedule 11.03.2016    source источник
comment
SELECT * FROM table в cqlsh. Ячейки больше не размещаются на диске, как в бережливом формате, поэтому CQL SELECT представляет ваши данные.   -  person Chris Lohfink    schedule 11.03.2016
comment
Но я хочу посмотреть, как Cassandra хранит эти данные под капотом. Выбор * из таблицы не показывает мне формат, такой как: RowKey: 100. => (имя =, значение =, отметка времени = 1387..) 07. => (имя = tmp, значение = 51cc0000, отметка времени = 1387. ..). Как кассандра сохранила мой выбор * из таблицы под капотом? Я больше не могу использовать список в cassandra 3.   -  person nimo23    schedule 11.03.2016
comment
thelastpickle.com/ блог/2016/03/04/   -  person RussS    schedule 12.03.2016
comment
Если вы действительно хотите изучить, как он хранится, вы можете использовать утилиту sstabledump (опция -d для более компактного чтения). Для большей интерактивности можно использовать автономные функции cqlsh в sstable tools   -  person Chris Lohfink    schedule 12.03.2016


Ответы (1)


Вы можете использовать утилиту sstabledump, как предложил @chris-lohfink. Как это использовать? Создайте пространство ключей, таблицу в нем заполните некоторыми данными:

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 — первичный ключ (ключ раздела), coordinate — ключ кластеризации.

Сбросить изменения на диск:

# nodetool flush

Найдите sstable на диске и проанализируйте его:

# 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" }
        ]
      }
    ]
  }
]

Или с флагом -d:

# 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

Вывод говорит, что 1235 и 564682 и сохраняет координаты в этих разделах.

Ссылка на документ http://www.datastax.com/dev/blog/debugging-sstables-in-3-0-with-sstabledump

PS. sstabledump предоставляется пакетом cassandra-tools в Ubuntu.

person ipeacocks    schedule 29.11.2016