25 Jun 2012 18:28
Re: cannot insert composite key
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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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 <at> gmail.com>
>>
>> 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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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
RSS Feed