Use MutatorImpl or ColumnFamilyTemplate API. Examples repectively: https://github.com/zznate/cassandra-tutorial/blob/master/src/main/java/com/datastax/tutorial/composite/CompositeDataLoader.java http://hector-client.github.io/hector/build/html/content/getting_started.html#update
The approach you took for insertion here is ancient - dating back to 0.6 version of the API. Effectively you are doubly serializing the Composite. On Thu, Jul 18, 2013 at 1:18 PM, <anand_balara...@homedepot.com> wrote: > Output of describe command is: > > > > [default@Test] describe CompositeColumnNameTest; > > ColumnFamily: CompositeColumnNameTest > > Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type > > Default column value validator: > org.apache.cassandra.db.marshal.UTF8Type > > Columns sorted by: > org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Ty > > pe,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type) > > GC grace seconds: 864000 > > Compaction min/max thresholds: 4/32 > > Read repair chance: 0.1 > > DC Local Read repair chance: 0.0 > > Replicate on write: true > > Caching: KEYS_ONLY > > Bloom Filter FP chance: default > > Built indexes: [] > > Compaction Strategy: > org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy > > Compression Options: > > chunk_length_kb: 64 > > sstable_compression: > org.apache.cassandra.io.compress.SnappyCompressor > > > > Vivek. The problem was not with this composite column. > > I was loading yet another column (not composite) which was getting data in > the below format: > > a40be0d3-5c49-446d-a835-ef6af29c016e > > bc79d3ef-18fd-4891-8b2c-1fdae404318c > > bf15fa45-176c-4749-8481-2c8a2f9dd70f > > > > It is a key (String) which I need to store along with the other data. If I > leave out this column alone, my loader program works well. > > Till it comes to my program, it is displayed as String. But, during insert, > I get the exception. > > Could you please suggest what data type am I supposed to use for such data? > > > > Thanks and Regards > > Anand > > > > From: Vivek Mishra [mailto:mishra.v...@gmail.com] > Sent: Thursday, July 18, 2013 1:24 PM > > > To: user@cassandra.apache.org > Subject: Re: Exception while writing compsite column names > > > > Yes. can you please share output of describe keyspace which contains > "CompositeColumnNameTest" > > What is the datatype for column values? > > > > -Vive > > > > On Thu, Jul 18, 2013 at 9:17 PM, <anand_balara...@homedepot.com> wrote: > > I had been using the StringSerilaizer.get() for all UTF8Type fields so far. > Do not think I need to check the code. > > Do you suspect the column family definition? > > > > -Anand > > > > From: Vivek Mishra [mailto:mishra.v...@gmail.com] > Sent: Thursday, July 18, 2013 11:29 AM > To: user@cassandra.apache.org > Subject: Re: Exception while writing compsite column names > > > > Looks like validation class for composite column value is different than > UTF8Type? Though code suggests it is: > > composite.addComponent("TEXT1", StringSerializer.get()); > > > > Please validate. > > > > -Vivek > > > > On Thu, Jul 18, 2013 at 7:41 PM, <anand_balara...@homedepot.com> wrote: > > Hi > > > > I have an issue while inserting a composite column name to one of the > Cassandra column families. Below is a detailed description of what I had > done and stuck up at. > > Please let me know where I had went wrong. > > > > Requirement: > > ------------------ > > Rowkey -> RowIdString > > Column name -> TEXT1 : value1 : TEXT2 : value2 : TEXT3 > > Column value -> value3 > > > > Column family definition: > > ------------------------------- > > create column family CompositeColumnNameTest > > WITH > comparator='CompositeType(UTF8Type,UTF8Type,UTF8Type,UTF8Type,UTF8Type)' > > AND key_validation_class=UTF8Type > > WITH compression_options={sstable_compression:SnappyCompressor, > chunk_length_kb:64}; > > > > Code: > > -------- > > String RowIdString = "1234"; > > > > Composite composite = new Composite(); > > composite.addComponent("TEXT1", StringSerializer.get()); > > composite.addComponent("value1", StringSerializer.get()); > > composite.addComponent("TEXT2", StringSerializer.get()); > > composite.addComponent("value3", StringSerializer.get()); > > composite.addComponent("TEXT3", StringSerializer.get()); > > > > Column column = new Column(composite.serialize()); > > column.setValue("value3".getBytes()); > > column.setTimestamp(System.currentTimeMillis()); > > > > // push data to cassandra > > batchMutate.addInsertion(RowIdString, "CompositeColumnNameTest", > column); > > keyspaceServiceImpl.batchMutate(batchMutate); > > > > Exception: > > ------------- > > me.prettyprint.hector.api.exceptions.HInvalidRequestException: > InvalidRequestException(why:Not enough bytes to read value of component 0) > > at > me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:45) > > at > me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(KeyspaceServiceImpl.java:97) > > at > me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(KeyspaceServiceImpl.java:90) > > at > me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:103) > > at > me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:258) > > at > me.prettyprint.cassandra.service.KeyspaceServiceImpl.operateWithFailover(KeyspaceServiceImpl.java:131) > > > > > > Thanks in advance > > -Anand > > > > ________________________________ > > > The information in this Internet Email is confidential and may be legally > privileged. It is intended solely for the addressee. Access to this Email by > anyone else is unauthorized. If you are not the intended recipient, any > disclosure, copying, distribution or any action taken or omitted to be taken > in reliance on it, is prohibited and may be unlawful. When addressed to our > clients any opinions or advice contained in this Email are subject to the > terms and conditions expressed in any applicable governing The Home Depot > terms of business or client engagement letter. The Home Depot disclaims all > responsibility and liability for the accuracy and content of this attachment > and for any damages or losses arising from any inaccuracies, errors, > viruses, e.g., worms, trojan horses, etc., or other items of a destructive > nature, which may be contained in this attachment and shall not be liable > for direct, indirect, consequential or special damages in connection with > this e-mail message or its attachment. > > > > > > ________________________________ > > > The information in this Internet Email is confidential and may be legally > privileged. It is intended solely for the addressee. Access to this Email by > anyone else is unauthorized. If you are not the intended recipient, any > disclosure, copying, distribution or any action taken or omitted to be taken > in reliance on it, is prohibited and may be unlawful. When addressed to our > clients any opinions or advice contained in this Email are subject to the > terms and conditions expressed in any applicable governing The Home Depot > terms of business or client engagement letter. The Home Depot disclaims all > responsibility and liability for the accuracy and content of this attachment > and for any damages or losses arising from any inaccuracies, errors, > viruses, e.g., worms, trojan horses, etc., or other items of a destructive > nature, which may be contained in this attachment and shall not be liable > for direct, indirect, consequential or special damages in connection with > this e-mail message or its attachment. > > > > > ________________________________ > > The information in this Internet Email is confidential and may be legally > privileged. It is intended solely for the addressee. Access to this Email by > anyone else is unauthorized. If you are not the intended recipient, any > disclosure, copying, distribution or any action taken or omitted to be taken > in reliance on it, is prohibited and may be unlawful. When addressed to our > clients any opinions or advice contained in this Email are subject to the > terms and conditions expressed in any applicable governing The Home Depot > terms of business or client engagement letter. The Home Depot disclaims all > responsibility and liability for the accuracy and content of this attachment > and for any damages or losses arising from any inaccuracies, errors, > viruses, e.g., worms, trojan horses, etc., or other items of a destructive > nature, which may be contained in this attachment and shall not be liable > for direct, indirect, consequential or special damages in connection with > this e-mail message or its attachment.