вставка из эрланга в кассандру - PullRequest
2 голосов
/ 16 июня 2011

Я пытаюсь вставить что-то в кассандру 0.7.6 из Erlang R14B02 (через комиссию 0.6.1)

Я делаю следующее:

  1. Чтение определений записей

    р-р (cassandra_types).

  2. Подключение к Кассандре

    {ok, C} = thrift_client_util: new ("localhost", 9160, cassandra_thrift, [{strict_read, false}, {strict_write, false}, {framed, true}]).

  3. Попробуйте вставить значение (отметка времени = 1, 2 = кворум)

    Reply1 = thrift_client: call (C, 'insert', ["isting_keyspace "," new_key ", # columnPath {column_family =" существующий_column_family ", column =" существующий_колонка "}," новое_значение ", 1,2]).

Но nr3 выдает ошибку bad_args (1 и 2 работают отлично). Какие будут правильные аргументы?

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

Информация об API для неподдерживаемых языков в основном содержится в их документации Cassandra Thrift API .

В Cassandra 0.7 вы не предоставляете пространство клавиш для большинства операций, поэтому insert просто берет [Key, ColumnPath, Column, ConsistencyLevel]. Вам нужно позвонить set_keyspace, прежде чем пытаться вставить. Вставка в erlang будет

Reply1 = thrift_client:call(C, 'insert',
                            [SomeKey,
                             #columnPath{column_family = "existing_column_family",
                                         column = "existing_column"},
                             #column{name="existing_column",
                                     value="new_value",timestamp=1},
                             ?cassandra_ConsistencyLevel_QUORUM]).

В вашем примере отсутствует ключ строки для вставки, я тоже думаю.

Кроме того, убедитесь, что вы всегда обновляете значение C - оно изменяется после каждого вызова thrift_client.

? Cassandra_ConsistencyLevel_QUORUM равно 2 из памяти.

0 голосов
/ 16 июня 2011

Это может помочь, хотя нет кода, специфичного для erlang: http://wiki.apache.org/cassandra/ThriftExamples

...