Nate McCall | 25 Jun 2012 18:43
Picon
Gravatar

Re: cannot insert composite key

Are you getting an exception back from hector with this new column
family? Or is it just not returning anything?

On Mon, Jun 25, 2012 at 11:28 AM, nguyen khac tu <tubcvt@...> wrote:
> here my CF create scrip in cassandra-cli :
>
> create column family logdata
>   with column_type = 'Standard'
>   and comparator =
> 'CompositeType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)'
>   and default_validation_class = 'UTF8Type'
>   and key_validation_class = 'UTF8Type'
>   and read_repair_chance = 0.1
>   and dclocal_read_repair_chance = 0.0
>   and gc_grace = 864000
>   and min_compaction_threshold = 4
>   and max_compaction_threshold = 32
>   and replicate_on_write = true
>   and compaction_strategy =
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'
>   and caching = 'KEYS_ONLY'
>   and compression_options = {'sstable_compression' :
> 'org.apache.cassandra.io.compress.SnappyCompressor'};
>
> use this table in cql3 i can do such i write in previous email :
> i can use this query similar:
>
> select * FROM logdata where time='22-01-2012';
>
> or
>
> select * FROM logdata where time='22-01-2012' and lineId=3
>
> but i can't do this in Hector , can you give an example for me ?? :(
>
>
> 2012/6/25 Nate McCall <zznate.m@...>
>>
>> Can you show the table creation script from the "cassandra-cli" via
>> "show create schema"?
>>
>> I don't yet have my head around the magic produced by the cql-3 table
>> creation scripts and their underlying composite stuff.
>>
>> On Mon, Jun 25, 2012 at 11:03 AM, nguyen khac tu <tubcvt@...> wrote:
>> > thanks for helping me ,, I think  i 'm wrong when set
>> > comparator  ="composite"
>> >
>> > but when i changed columnfamily logdata to :
>> >
>> >
>> > CREATE TABLE logdata (
>> >   time text,
>> >   lineid text,
>> >   value text,
>> >   PRIMARY KEY (time, lineid)
>> > ) WITH
>> >   comment='' AND
>> >   caching='KEYS_ONLY' AND
>> >   read_repair_chance=0.100000 AND
>> >   gc_grace_seconds=864000 AND
>> >   min_compaction_threshold=4 AND
>> >   max_compaction_threshold=32 AND
>> >   replicate_on_write='true' AND
>> >   compaction_strategy_class='SizeTieredCompactionStrategy' AND
>> >   compression_parameters:sstable_compression='SnappyCompressor';
>> >
>> >
>> > CREATE TABLE logdata (
>> >   timestamp text,
>> >   lineid text,
>> >   value text,
>> >   PRIMARY KEY (time, lineid)
>> > ) WITH
>> >   comment='' AND
>> >   caching='KEYS_ONLY' AND
>> >   read_repair_chance=0.100000 AND
>> >   gc_grace_seconds=864000 AND
>> >   min_compaction_threshold=4 AND
>> >   max_compaction_threshold=32 AND
>> >   replicate_on_write='true' AND
>> >   compaction_strategy_class='SizeTieredCompactionStrategy' AND
>> >   compression_parameters:sstable_compression='SnappyCompressor';
>> >
>> > i still get that error when insert
>> >
>> > Can we use a Column family which have two columns as primary key like as
>> > RDBMS , and other columns is non composite type ???  ( my data is the
>> > weblog
>> > , we want to use timestamp ,and a autoincrement integer as a primary
>> > key) to
>> > partition data in such query (in CQL)
>> >
>> > select * From logdata where timestamp=?? ==> do any thing analytic with
>> > this
>> > data
>> >
>> > my data example :
>> > timestamp               |  data
>> > 2012-05-24 10:44:12 | 2  Firefox...
>> > 2012-05-24 10:44:12  | 2  MSIE...
>> >
>> >
>> >
>> >
>> >
>> > 2012/6/25 Nate McCall <zznate.m@...>
>> >>
>> >> You have declared the column name to have the same type of comparator
>> >> as the key validation class.
>> >>
>> >> The composite key is constructed correctly the column is not. The name
>> >> is a single string were it should be a composite constructed similarly
>> >> to the key (or change the default_comparator to a non-composite UTF8).
>> >>
>> >> On Mon, Jun 25, 2012 at 2:17 AM, nguyen khac tu <tubcvt@...>
>> >> wrote:
>> >> > hi all
>> >> > i have a column family AllLog create that
>> >> >
>> >> > create column family LogData
>> >> >   with column_type = 'Standard'
>> >> >   and comparator =
>> >> >
>> >> >
>> >> > 'CompositeType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)'
>> >> >   and default_validation_class = 'UTF8Type'
>> >> >   and key_validation_class = 'CompositeType(UTF8Type,UTF8Type)';
>> >> >
>> >> > but when i use mutator to insert :
>> >> >
>> >> >         String key0 = "key0";
>> >> >         String key1 = "key1";
>> >> >
>> >> >         Composite compositeKey = new Composite();
>> >> >         compositeKey.addComponent(key0, StringSerializer.get());
>> >> >         compositeKey.addComponent(key1, StringSerializer.get());
>> >> >
>> >> >         // add
>> >> >         mutator.addInsertion(compositeKey, columnFamilyName,
>> >> > HFactory.createColumn("name", "value"));
>> >> >         mutator.execute();
>> >> >
>> >> > always through exception:
>> >> >
>> >> > me.prettyprint.hector.api.exceptions.HInvalidRequestException:
>> >> > InvalidRequestException(why:Not enough bytes to read value of
>> >> > component
>> >> > 0)
>> >> >
>> >> > please some one help me, where is my mistake in this code :(
>> >> > ??????????
>> >> >
>> >> > thanks all
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >
>> >
>> >
>> >
>> > --
>> > Nguyen Khac Tu
>
>
>
>
> --
> Nguyen Khac Tu


Gmane