Кассандра УДТ и ЯВА

У меня есть несколько вопросов по поводу UDT, не уверен, что это ошибка или нет.

вот мое определение типа и определение таблицы

CREATE TYPE test_udt_bigint (
    id    varchar,
    data Map<int, bigint>
);

CREATE TYPE test_udt (
    id    varchar,
    data Map<int, int>
);

CREATE TABLE test_tbl_bigint (
    row_id varchar PRIMARY KEY,
    udt_data map<varchar, frozen<test_udt_bigint>>
);

CREATE TABLE test_tbl_int (
    row_id varchar PRIMARY KEY,
    udt_data map<varchar, frozen<test_udt>>
);

После создания этих объектов я использовал cqlsh для вставки данных, он добился успеха, и я могу использовать команду select для извлечения данных. Но после вставки данных через JAVA это вызовет много проблем.

Вот репозиторий, который я использовал для вставки данных: https://github.com/sophiah/cassandra_test/tree/master/cassandra-test-udt

После вставки данных в test_tbl_udt все выглядит отлично, и я могу выбрать через cqlsh как обычно:

cqlsh:testcassandra> select * from test_tbl_int;

row_id | udt_data
--------+------------------------------------------------
test | {'key-01': {id: 'mapkey-01 ', data: {10: 20}}}
xxx |  {'key-01': {id: 'mapkey-01', data: {10: 20}}}

но после вставки данных в test_tbl_bigint что-то = неправильно:

cqlsh:testcassandra> select * from test_tbl_int;
Traceback (most recent call last):
File "bin/cqlsh", line 1093, in perform_simple_statement
    rows = self.session.execute(statement, trace=self.tracing_enabled)
File "/opt/apache-cassandra-2.1.11/bin/../lib/cassandra-driver-internal-only-2.7.2.zip/cassandra-driver-2.7.2/cassandra/cluster.py", line 1602, in execute
    result = future.result()
File "/opt/apache-cassandra-2.1.11/bin/../lib/cassandra-driver-internal-only-2.7.2.zip/cassandra-driver-2.7.2/cassandra/cluster.py", line 3347, in result
    raise self._final_exception
error: unpack requires a string argument of length 4

cqlsh:testcassandra> select * from test_tbl_bigint;
NoHostAvailable: ('Unable to complete the operation against any hosts', {<Host: 127.0.0.1 datacenter1>: ConnectionShutdown('Connection to 127.0.0.1 is defunct',)})

любое предложение?

Спасибо

1 ответ

Решение

Короткий ответ: имя таблицы неверно в da_test_tbl_bigint.javaон пытается вставить в test_tbl_int, Мне еще не ясно, почему драйвер не улавливает ошибку, я обновлю свой ответ, когда выясню это.

Другие вопросы по тегам