2015-11-09 3 views
1

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

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

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 для вставки данных, он получил успех, и я могу использовать выберите команду для извлечения данных. Но после ввода данных через 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',)}) 

любой SuG Gestion?

благодаря

+0

Какую версию Кассандры вы используете? –

+0

Версия Cassandra 2.2.3 –

ответ

2

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

+0

О, я этого не заметил, позвольте мне попробовать правильный и обновить результат (еще одна проблема там) –

+0

спасибо за помощь Оливье, просмотрев все мои коды и установив конфигурацию пропусков, это хорошо работает сейчас. большое спасибо. –