[
https://issues.apache.org/jira/browse/CASSANDRA-6513?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14066727#comment-14066727
]
Ala' Alkhaldi commented on CASSANDRA-6513:
------------------------------------------
That was my intention in beginning. Unfortunately, just removing the quote()
function will cause problems.
Please note the current implementation of
CqlPagingRecordReader.RowIterator.composeQuery(), it always inserts the
partitioning key at the beginning of any select statement without quoting, and
always adds extra conditions to the where clause without quoting. This means if
the partitioning key needs to be quoted the query will fail.
To rely on the user for quoting I suggest v3 which quote all our additions and
leave the rest to user decision.
> CqlPaging for hadoop fails when writetime(column_name) is set as one of the
> input columns
> -----------------------------------------------------------------------------------------
>
> Key: CASSANDRA-6513
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6513
> Project: Cassandra
> Issue Type: Bug
> Components: Hadoop
> Environment: ubuntu 12.04, hadoop 1.0.3, cassandra-1.2.13
> Reporter: Sheetal Gosrani
> Assignee: Ala' Alkhaldi
> Labels: CqlPaging, Hadoop
> Fix For: 2.0.10
>
> Attachments: 6513-v2.txt, 6513-v3.txt, 6513_v1.txt
>
>
> InvalidRequestException thrown when running a hadoop job with CqlPaging with
> writetime(column_name) set as one of the input columns.
> 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.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.Child$4.run(Child.java:255)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.security.auth.Subject.doAs(Subject.java:415)
> at
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
> at org.apache.hadoop.mapred.Child.main(Child.java:249)
> Caused by: InvalidRequestException(why:Undefined name WRITETIME(foo) in
> selection clause)
> at
> org.apache.cassandra.thrift.Cassandra$prepare_cql3_query_result.read(Cassandra.java:40395)
> at
> org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
> at
> org.apache.cassandra.thrift.Cassandra$Client.recv_prepare_cql3_query(Cassandra.java:1660)
> at
> org.apache.cassandra.thrift.Cassandra$Client.prepare_cql3_query(Cassandra.java:1646)
> at
> org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader$RowIterator.prepareQuery(CqlPagingRecordReader.java:605)
> at
> org.apache.cassandra.hadoop.cql3.CqlPagingRecordReader$RowIterator.executeQuery(CqlPagingRecordReader.java:635)
> ... 10 more
> The hadoop config lines look as such:
> //read input from cassandra column family using CQL Input Format
> job.setInputFormatClass(CqlPagingInputFormat.class);
> ConfigHelper.setInputColumnFamily(job.getConfiguration(), KEYSPACE,
> INPUT_COLUMN_FAMILY);
> ConfigHelper.setInputRpcPort(job.getConfiguration(), "9160");
> ConfigHelper.setInputInitialAddress(job.getConfiguration(), HOST);
> ConfigHelper.setInputPartitioner(job.getConfiguration(),
> "RandomPartitioner");
> CqlConfigHelper.setInputColumns(job.getConfiguration(),
> "foo,WRITETIME(foo)");
> job.getConfiguration().set("cassandra.consistencylevel.read",
> READ_CONSISTENCY);
> CqlConfigHelper.setInputCQLPageRowSize(job.getConfiguration(),
> "3000");
--
This message was sent by Atlassian JIRA
(v6.2#6252)