기본적으로 다음과 같은 문제가 발생합니다. Composite key in Cassandra with Pig. 유일한 차이점은 돼지의 where_clause 내에서 복합 키의 일부를 쿼리하려고한다는 것입니다.Cassandra와 Pig가있는 복합 키와 where 절의 키 부분에 대한 where_clause
데이터 구조는 앞에서 설명한 문제와 유사하므로 해당 문제의 읽기를 최소화하기 위해 일부 코드/컨텍스트를 복사합니다.
우리는 다음과 같이 보이는 CQL 테이블이 :
대신 (앞서 언급 한 문제의 문제였다으로) 내가 키 중 하나를 조회하려고 seqnumber과 occurday 모두 쿼리의CREATE table data (
occurday text,
seqnumber int,
occurtimems bigint,
unique bigint,
fields map<text, text>,
primary key ((occurday, seqnumber), occurtimems, unique)
)
.
그러나이 쿼리를 Pig에서 LOAD의 일부로 실행하면 모든 것이 작동하지 않습니다.
-- Need to URL encode the query
data = LOAD 'cql://ks/data?where_clause=occurday%3D%272013-10-01%27' USING CqlStorage();
는
java.lang.RuntimeException
at org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader$RowIterator.executeQuery(CqlPagingRecordReader.java:665)
at org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader$RowIterator.<init>(CqlPagingRecordReader.java:301)
at org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader.initialize(CqlPagingRecordReader.java:167)
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.initialize(PigRecordReader.java:181)
at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:522)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)
Caused by: InvalidRequestException(why:occurday cannot be restricted by more than one relation if it includes an Equal)
at org.apache.cassandra.thrift.Cassandra$prepare_cql3_query_result$prepare_cql3_query_resultStandardScheme.read(Cassandra.java:51017)
at org.apache.cassandra.thrift.Cassandra$prepare_cql3_query_result$prepare_cql3_query_resultStandardScheme.read(Cassandra.java:50994)
at org.apache.cassandra.thrift.Cassandra$prepare_cql3_query_result.read(Cassandra.java:50933)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
at org.apache.cassandra.thrift.Cassandra$Client.recv_prepare_cql3_query(Cassandra.java:1756)
at org.apache.cassandra.thrift.Cassandra$Client.prepare_cql3_query(Cassandra.java:1742)
at org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader$RowIterator.prepareQuery(CqlPagingRecordReader.java:605)
at org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader$RowIterator.executeQuery(CqlPagingRecordReader.java:635)
... 7 more
는 기본적으로 내 질문은, 어떻게 내가 잘못하고있는 중이거나 내가 무엇을 이해하지 못하는 준다?
내가 알고있는 것처럼 CqlPagingRecorderReader Used when Partition Key Is Explicitly Stated 나는 파티션 키의 일부로 쿼리 할 수 있어야합니까?
또한 Add CqlRecordReader to take advantage of native CQL pagination 을 읽는 동안 나는이 가능해야한다 인상을 얻을 수 있지만, 나는 (내 생각에) 주변에이 작업을 수행하는 방법에 대한 명확한 방향을 수영하지하고 있습니다.
이 시점에서 어떤 도움도 매우 환영합니다.
감사
레나 Weijl
PS.
내가 카산드라-6311에 따르면 0.13.0