Discussion:
Unable to prefix in astyanax read query
Pushkar Prasad
2013-04-02 14:11:00 UTC
Permalink
Hi,

This is a Astyanax issue that we've encountered.

I have a scheme as follows:

TimeStamp
Device ID
Device Name
Device Owner
Device location

I have created this column family using CQL and defined the primary key as
(TimeStamp,Device ID, Device Name). Through a serializable object that has
fields for DeviceID, name and a field name (which stores either Device Owner
or
Device Location). I have inserted some records using Astyanax.

As per my understanding, the columns for a row are created by combining
Device ID, Device Name and field name as column name and the value to be the
value for that particular field. Thus for a particular timestamp and device,
the column names would be in the pattern (Device ID:Device Name: ...).

So I believe we can use these 2 fields as prefix to obtain all the entries
for a particular time-device combination.

I am using the following query to obtain the results:

RowSliceQuery<String, ApBaseData> query = adu.keyspace
.prepareQuery(columnFamily)
.getKeySlice(timeStamp)
.withColumnRange(new RangeBuilder()
.setStart(deviceID+deviceName+"_\u00000")
.setEnd(deviceID+deviceName+"_\uffff")
.setLimit(batch_size)
.build());

But on executing the above query I get the following Exception:

BadRequestException: [host=localhost(127.0.0.1):9160, latency=6(6),
attempts=1]InvalidRequestException(why:Not enough bytes to read value of
component 0)

Can any one help to understand where am I going wrong?

Loading...