cassandra apache-pig

cassandra - Clave compuesta en Casandra con Cerdo



apache-pig (1)

Tenemos una tabla CQL que se ve así:

CREATE table data ( occurday text, seqnumber int, occurtimems bigint, unique bigint, fields map<text, text>, primary key ((occurday, seqnumber), occurtimems, unique) )

Puedo consultar esta tabla desde cqlsh esta manera:

select * from data where seqnumber = 10 AND occurday = ''2013-10-01'';

Esta consulta funciona y devuelve los datos esperados.

Sin embargo, si ejecuto esta consulta como parte de una LOAD dentro de Pig, las cosas no funcionan.

-- Need to URL encode the query data = LOAD ''cql://ks/data?where_clause=seqnumber%3D10%20AND%20occurday%3D%272013-10-01%27'' USING CqlStorage();

da

InvalidRequestException(why:seqnumber cannot be restricted by more than one relation if it includes an Equal) at org.apache.cassandra.thrift.Cassandra$prepare_cql3_query_result.read(Cassandra.java:39567) at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) at org.apache.cassandra.thrift.Cassandra$Client.recv_prepare_cql3_query(Cassandra.java:1625) at org.apache.cassandra.thrift.Cassandra$Client.prepare_cql3_query(Cassandra.java:1611) at org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader$RowIterator.prepareQuery(CqlPagingRecordReader.java:591) at org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader$RowIterator.executeQuery(CqlPagingRecordReader.java:621)

¿No deberían estos comportarse igual? ¿Por qué la versión a través de Pig falla donde funciona el comando straight cqlsh ?


Hadoop está usando CqlPagingRecordReader para intentar cargar sus datos. Esto lleva a consultas que no son idénticas a las que ha ingresado. El lector de registros de búsqueda está tratando de obtener pequeñas porciones de datos de Cassandra a la vez para evitar tiempos de espera.

Esto significa que su consulta se ejecuta como

SELECT * FROM "data" WHERE token("occurday","seqnumber") > ? AND token("occurday","seqnumber") <= ? AND occurday=''A Great Day'' AND seqnumber=1 LIMIT 1000 ALLOW FILTERING

Y esta es la razón por la que está viendo su error clave repetido. Enviaré un error al Proyecto Cassandra.

Jira: https://issues.apache.org/jira/browse/CASSANDRA-6151