Hi again,
i am still having trouble with this.
If I define the index using cli with these commands:
create column family A with column_type='Standard' and
comparator='TimeUUIDType' and keys_cached=200000 and read_repair_chance=1.0 and
rows_cached=0.0 and column_metadata=[{column_name:
00000000-0000-1000-0000-000000000000, validation_class: UTF8Type, index_name:
MyIndex, index_type: KEYS}];
create column family B with column_type='Standard' and
comparator='TimeUUIDType' and keys_cached=200000 and read_repair_chance=1.0 and
rows_cached=0.0 and column_metadata=[{column_name:
00000000-0000-1000-0000-000000000000, validation_class: UTF8Type, index_name:
MyIndex, index_type: KEYS}];
I can do IndexedSliceQueries as expected
In my unit tests where I use an embedded Cassandra instance configured via yaml
like this:
- column_metadata: [{name: 00000000-0000-1000-0000-000000000000,
validator_class: UTF8Type, index_name: MyIndex, index_type: KEYS}]
compare_with: TimeUUIDType
gc_grace_seconds: 864000
keys_cached: 0.0
max_compaction_threshold: 32
min_compaction_threshold: 4
name: A
read_repair_chance: 1.0
rows_cached: 0.0
- column_metadata: [{name: 00000000-0000-1000-0000-000000000000,
validator_class: UTF8Type, index_name: MyIndex, index_type: KEYS}]
compare_with: TimeUUIDType
gc_grace_seconds: 864000
keys_cached: 0.0
max_compaction_threshold: 32
min_compaction_threshold: 4
name: B
read_repair_chance: 1.0
rows_cached: 0.0
I get these Exceptions:
18:23:55.973 [CassandraDataFetcher-queries] ERROR
c.y.s.c.i.event.CassandraDataFetcher - Query
me.prettyprint.cassandra.model.IndexedSlicesQuery@1bbd3e2 failed, stop query.
me.prettyprint.hector.api.exceptions.HInvalidRequestException:
InvalidRequestException(why:No indexed columns present in index clause with
operator EQ)
at
me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:42)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.service.KeyspaceServiceImpl$12.execute(KeyspaceServiceImpl.java:513)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.service.KeyspaceServiceImpl$12.execute(KeyspaceServiceImpl.java:495)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:101)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:161)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.service.KeyspaceServiceImpl.operateWithFailover(KeyspaceServiceImpl.java:129)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.service.KeyspaceServiceImpl.getIndexedSlices(KeyspaceServiceImpl.java:517)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.model.IndexedSlicesQuery$1.doInKeyspace(IndexedSlicesQuery.java:140)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.model.IndexedSlicesQuery$1.doInKeyspace(IndexedSlicesQuery.java:131)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.model.KeyspaceOperationCallback.doInKeyspaceAndMeasure(KeyspaceOperationCallback.java:20)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.model.ExecutingKeyspace.doExecute(ExecutingKeyspace.java:85)
~[hector-core-0.7.0-26.jar:na]
at
me.prettyprint.cassandra.model.IndexedSlicesQuery.execute(IndexedSlicesQuery.java:130)
~[hector-core-0.7.0-26.jar:na]
at
com.yoochoose.services.cassandra.internal.event.CassandraDataFetcher$1.onMessage(CassandraDataFetcher.java:60)
[classes/:na]
at
com.yoochoose.services.cassandra.internal.event.CassandraDataFetcher$1.onMessage(CassandraDataFetcher.java:47)
[classes/:na]
at
org.jetlang.channels.ChannelSubscription$1.run(ChannelSubscription.java:31)
[jetlang-0.2.1.jar:na]
at org.jetlang.core.BatchExecutorImpl.execute(BatchExecutorImpl.java:11)
[jetlang-0.2.1.jar:na]
at
org.jetlang.core.RunnableExecutorImpl.run(RunnableExecutorImpl.java:34)
[jetlang-0.2.1.jar:na]
at org.jetlang.fibers.ThreadFiber.runThread(ThreadFiber.java:51)
[jetlang-0.2.1.jar:na]
at org.jetlang.fibers.ThreadFiber.access$000(ThreadFiber.java:10)
[jetlang-0.2.1.jar:na]
at org.jetlang.fibers.ThreadFiber$1.run(ThreadFiber.java:27)
[jetlang-0.2.1.jar:na]
at java.lang.Thread.run(Thread.java:619) [na:1.6.0_17]
Caused by: org.apache.cassandra.thrift.InvalidRequestException: null
at
org.apache.cassandra.thrift.Cassandra$get_indexed_slices_result.read(Cassandra.java:13299)
~[cassandra-all-0.7.0.jar:0.7.0]
at
org.apache.cassandra.thrift.Cassandra$Client.recv_get_indexed_slices(Cassandra.java:780)
~[cassandra-all-0.7.0.jar:0.7.0]
at
org.apache.cassandra.thrift.Cassandra$Client.get_indexed_slices(Cassandra.java:752)
~[cassandra-all-0.7.0.jar:0.7.0]
at
me.prettyprint.cassandra.service.KeyspaceServiceImpl$12.execute(KeyspaceServiceImpl.java:501)
~[hector-core-0.7.0-26.jar:na]
... 19 common frames omitted
With the very same code and data.
I assume that the column name I give in Cassandra.yaml is somehow not
inmterpreted as a TimedUUID or something.
Any help would be greatly appreciated
Greetings,
roland
Von: Michal Augustýn [mailto:[email protected]]
Gesendet: Dienstag, 15. Februar 2011 16:22
An: [email protected]
Betreff: Re: cant seem to figure out secondary index definition
Ah, ok. I checked that in source and the problem is that you wrote
"validation_class" but you should "validator_class".
Augi
2011/2/15 Roland Gude
<[email protected]<mailto:[email protected]>>
Yeah i know about that, but the definition i have is for a cluster that is
started/stopped from a unit test with hector embeddedServerHelper, which takes
definitions from the yaml.
So i'd still like to define the index in the yaml file (it should very well be
possible I guess)
Von: Michal Augustýn
[mailto:[email protected]<mailto:[email protected]>]
Gesendet: Dienstag, 15. Februar 2011 15:53
An: [email protected]<mailto:[email protected]>
Betreff: Re: cant seem to figure out secondary index definition
Hi,
if you download Cassandra and look into "conf/cassandra.yaml" then you can see
this:
"this keyspace definition is for demonstration purposes only. Cassandra will
not load these definitions during startup. See
http://wiki.apache.org/cassandra/FAQ#no_keyspaces for an explanation."
So you should make all schema-related operation via Thrift/AVRO API, or you can
use Cassandra CLI.
Augi
2011/2/15 Roland Gude
<[email protected]<mailto:[email protected]>>
Hi,
i am a little puzzled on creation of secondary indexes and the docs in that
area are still very sparse.
What I am trying to do is - in a columnfamily with TimeUUID comparator, I want
the "special" timeuuid 00000000-0000-1000-0000-000000000000 to be indexed. The
value being some UTF8 string on which I want to perform equality checks.
What do I need to put in my cassandra.yaml file?
Something like this?
- column_metadata: [{name: 00000000-0000-1000-0000-000000000000,
validation_class: UTF8Type, index_name: MyIndex, index_type: KEYS}]
This gives me that error:
15:05:12.492 [pool-1-thread-1] ERROR o.a.c.config.DatabaseDescriptor - Fatal
error: null; Can't construct a java object for
tag:yaml.org<http://yaml.org>,2002:org.apache.cassandra.config.Config;
exception=Cannot create property=keyspaces for
JavaBean=org.apache.cassandra.config.Config@7eb6e2; Cannot create
property=column_families for
JavaBean=org.apache.cassandra.config.RawKeyspace@987a33; Cannot create
property=column_metadata for
JavaBean=org.apache.cassandra.config.RawColumnFamily@716cb7; Cannot create
property=validation_class for
JavaBean=org.apache.cassandra.config.RawColumnDefinition@e29820; Unable to find
property 'validation_class' on class:
org.apache.cassandra.config.RawColumnDefinition
Bad configuration; unable to start server
I am furthermor uncertain if the column name will be correctly used if given
like this. Should I put the byte representation of the uuid there?
Greetings,
roland
--
YOOCHOOSE GmbH
Roland Gude
Software Engineer
Im Mediapark 8, 50670 Köln
+49 221 4544151 (Tel)
+49 221 4544159 (Fax)
+49 171 7894057 (Mobil)
Email: [email protected]<mailto:[email protected]>
WWW: www.yoochoose.com<http://www.yoochoose.com/>
YOOCHOOSE GmbH
Geschäftsführer: Dr. Uwe Alkemper, Michael Friedmann
Handelsregister: Amtsgericht Köln HRB 65275
Ust-Ident-Nr: DE 264 773 520
Sitz der Gesellschaft: Köln