Недостаточно байтов для чтения значения компонента 0 — Гектор Составной столбец Чтение

Возникла проблема при чтении из составных столбцов с помощью hector api.

Моя семья колонок:

create column family step_wise_stats_cc with key_validation_class = 'CompositeType(UTF8Type, UTF8Type)' and comparator = UTF8Type and default_validation_class = UTF8Type;

Данные: Ключ строки: {TYPE-1,SUB-TYPE-1}
Столбцы:Name1:Value1

Я запрашиваю это так:

Cluster cluster = HFactory.getOrCreateCluster("cls1", "localhost:9160");;
Keyspace keyspace = HFactory.createKeyspace("ks1",cluster);;
Serializer se = StringSerializer.get();

Composite start = new Composite();
start.addComponent(0, "TYPE-1", ComponentEquality.EQUAL);
start.addComponent(1, "SUB-TYPE-1", ComponentEquality.EQUAL);
Composite end = new Composite();
end.addComponent(0, "TYPE-1", ComponentEquality.GREATER_THAN_EQUAL);
start.addComponent(1, "SUB-TYPE-1", ComponentEquality.GREATER_THAN_EQUAL);

SliceQuery<String, Composite, String> sliceQuery = HFactory.createSliceQuery(keyspace, se, CompositeSerializer.get(), se);;
sliceQuery.setColumnFamily("cf1");
sliceQuery.setKey("TYPE-1");
sliceQuery.setRange(start, start, false, 999);

QueryResult<ColumnSlice<Composite, String>> qr = sliceQuery.execute();

Но ниже исключение: me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestExc eption (почему: недостаточно байтов для чтения значения компонента 0)

Любая помощь?


person Gireesh Puthumana    schedule 18.06.2013    source источник
comment
Вы ссылаетесь на это stackoverflow.com/questions/15446187/.   -  person tiennv    schedule 27.10.2019


Ответы (1)


Ваш ключ строки CompositeType, но вы устанавливаете ключ строки в "TYPE-1". Вот почему Кассандра выдает вам ошибку.

Запрос среза возвращает диапазон столбцов для данной строки. Вам нужно либо указать составной элемент для ключа строки, либо изменить модель данных, переместив подтип в столбец и сделав столбец составным.

person Richard    schedule 19.06.2013
comment
Я немного запутался здесь с составными ключами строк и составными столбцами. Можете ли вы предоставить хорошую ссылку на них? - person Gireesh Puthumana; 19.06.2013
comment
Основное отличие состоит в том, что вы можете выполнять диапазонные запросы по столбцам, но не по строкам. Таким образом, все запросы должны знать полный ключ строки (составной или нет), но не нужно указывать точные столбцы. - person Richard; 19.06.2013
comment
Спасибо, Ричард, еще один вопрос. В моем случае у меня около 100 ключей (или, скажем, ТИПОВ). Под каждым могут быть десятки тысяч ПОДТИПОВ. И против каждого подтипа будет 5-6 столбцов. Как мне смоделировать семейство столбцов? Заранее спасибо.. - person Gireesh Puthumana; 20.06.2013