Семейство столбцов Cassandra отображается по-разному через CLI и DataStax

0

Я пытаюсь понять, почему я вижу разные данные двумя способами для отображения столбцов семейства столбцов Cassandra (1.2.x).

Во-первых, я использую cassandra-cli для list строк в семействе столбцов.

[cassandra-cli]> list Users columns 1;
Using default limit of 100
-------------------
RowKey: [rowkey1]
=> (name=[name1], value=[value1], timestamp=[timestamp1])

Данные между [] являются заполнителем для значения. В действительности они отображаются как шестнадцатеричное представление byte[]. Вышеупомянутое указывает, что есть одна строка с одним столбцом (который имеет имя, значение и временную метку).

Я делаю то, что, как я думаю, эквивалентен API DataStax v1

var cluster = Cluster.Builder ()
    .AddContactPoint ("127.0.0.1")
    .Build ();

var metadata = cluster.Metadata;
var keyspace = "keyspaceName";
var tableMetadatas = metadata.GetTables(keyspace);

foreach (var tableMetadata in tableMetadatas) {
    var session = cluster.Connect(keyspace);    

    var rowSet = session.Execute("SELECT * FROM \""+ tableMetadata + "\" ", ConsistencyLevel.One);
    CqlColumn[] columns = rowSet.Columns;

    foreach(var column in columns) {
        Console.WriteLine("Column name: " + column.Name + ", type: " + column.Type + ", keyspace: " + column.Keyspace);
    }

    foreach (var row in rowSet.GetRows()) {
        for (int i = 0; i < row.Length; i++) {
            String value = Encoding.UTF8.GetString(row.GetValue<byte[]>(i));
                        Console.WriteLine(value);
        }
    }
}

Это отображает

Column name: key, type: System.Byte[], keyspace: keyspaceName
Column name: column1, type: System.Byte[], keyspace: keyspaceName
Column name: value, type: System.Byte[], keyspace: keyspaceName
[The string value of rowkey1]
[The string value of name1]
[The string value of value1]

Кажется, это указывает на наличие трех столбцов: один с key имени, где значение является rowkey; один с именем column1, где значение - значение name1; и один с именем value, где значение является значением value1.

Как я должен интерпретировать эти расхождения?

Теги:
cassandra
datastax
cassandra-cli

1 ответ

7
Лучший ответ

При использовании cassandra-cli вы видите "Thrift-перспективу" вашего хранилища, используя драйвер cqlsh а cqlsh даст вам "CQL-перспективу".

Был ряд сообщений, описывающих, как эти 2 связаны. Я связался с ними в своем ответе на вопрос о Разном между Thrift и CQL3 на SO.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню