[
https://issues.apache.org/jira/browse/CASSANDRA-2542?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13023227#comment-13023227
]
Timu Eren commented on CASSANDRA-2542:
--------------------------------------
yes, i see this message but i don't pass any row name in map reduce job, i use
column names (subcomparator=UTF8Type) instead SliceRange for SlicePredicate and
i still get IRE, so who is passing invalid row names if i don't passed? and
same code, same data is works if i use IntegerType for comparator instead
LongType.
more readable code is here: http://pastebin.com/dVYGvy8A
> InvalidRequestException
> -----------------------
>
> Key: CASSANDRA-2542
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2542
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Affects Versions: 0.7.4
> Reporter: Timu Eren
> Priority: Minor
>
> i got InvalidRequestException when execute map reduce jobs on supercolumn, if
> i set the comparator as LongType, other types (AsciiType, UTF8Type,
> IntegerType) works just fine
> Here is reprocedure details.
> create column family
> SuperTest
> with
> column_type=Super and
> comparator=LongType and
> subcomparator=UTF8Type and
> default_validation_class=UTF8Type;
> list SuperTest;
> Using default limit of 100
> -------------------
> RowKey: 2
> => (super_column=10,
> (column=1, value=1, timestamp=1303459440853000))
> => (super_column=11,
> (column=1, value=1, timestamp=1303459437632000))
> => (super_column=12,
> (column=1, value=1, timestamp=1303459432652000))
> => (super_column=13,
> (column=1, value=1, timestamp=1303459435102000))
> -------------------
> RowKey: 1
> => (super_column=10,
> (column=1, value=1, timestamp=1303459423202000))
> => (super_column=11,
> (column=1, value=1, timestamp=1303459419112000))
> => (super_column=12,
> (column=deneme, value=1, timestamp=1303459362702000))
> => (super_column=13,
> (column=deneme, value=1, timestamp=1303459382023000))
> => (super_column=15,
> (column=1, value=1, timestamp=1303459426402000))
> 2 Rows Returned.
> == Test class ==
> import java.io.IOException;
> import java.nio.ByteBuffer;
> import java.util.List;
> import java.util.SortedMap;
> import org.apache.cassandra.hadoop.ColumnFamilyInputFormat;
> import org.apache.cassandra.hadoop.ColumnFamilyOutputFormat;
> import org.apache.cassandra.hadoop.ConfigHelper;
> import org.apache.cassandra.avro.Mutation;
> import org.apache.cassandra.thrift.SliceRange;
> import org.apache.cassandra.thrift.SlicePredicate;
> import org.apache.cassandra.utils.ByteBufferUtil;
> import org.apache.cassandra.db.IColumn;
> import org.apache.hadoop.conf.Configuration;
> import org.apache.hadoop.conf.Configured;
> import org.apache.hadoop.io.IntWritable;
> import org.apache.hadoop.io.Text;
> import org.apache.hadoop.mapreduce.Job;
> import org.apache.hadoop.mapreduce.Mapper;
> import org.apache.hadoop.mapreduce.Reducer;
> import org.apache.hadoop.util.Tool;
> import org.apache.hadoop.util.ToolRunner;
> import org.slf4j.Logger;
> import org.slf4j.LoggerFactory;
> class SuperColumnTest extends Configured implements Tool {
>
> private static final Logger logger =
> LoggerFactory.getLogger(SuperColumnTest.class);
>
> public static void main(String[] args) throws Exception {
> ToolRunner.run(new Configuration(), new SuperColumnTest(), args);
> System.exit(0);
> }
>
> public static class SuperColumnTestMapper extends Mapper<ByteBuffer,
> SortedMap<ByteBuffer, IColumn>, Text, IntWritable> {
> private static final Logger logger =
> LoggerFactory.getLogger(SuperColumnTestMapper.class);
>
> public void map(ByteBuffer key, SortedMap<ByteBuffer, IColumn>
> columns, Context context) throws IOException, InterruptedException {
>
> logger.info(String.format("Key:%s, size: %s",
> ByteBufferUtil.string(key), columns.size()));
>
>
> }
> }
>
> public static class SuperColumnTestReducer extends Reducer<Text,
> IntWritable, ByteBuffer, List<Mutation>> {
> public void reduce(Text key, Iterable<IntWritable> values, Context
> context) throws IOException, InterruptedException {
>
> }
> }
>
> public int run(String[] args) throws Exception{
>
> Job job = new Job(this.getConf(), "SuperColumnMapReduceTest");
> job.setJarByClass(SuperColumnTest.class);
> job.setMapperClass(SuperColumnTestMapper.class);
> job.setReducerClass(SuperColumnTestReducer.class);
>
>
> job.setOutputFormatClass(ColumnFamilyOutputFormat.class);
> ConfigHelper.setOutputColumnFamily(job.getConfiguration(), "xxxx",
> "SuperTest");
>
> job.setMapOutputKeyClass(Text.class);
> job.setMapOutputValueClass(IntWritable.class);
>
> job.setOutputKeyClass(ByteBuffer.class);
> job.setOutputValueClass(List.class);
> job.setInputFormatClass(ColumnFamilyInputFormat.class);
>
>
> ConfigHelper.setInputColumnFamily(job.getConfiguration(), "xxxx",
> "SuperTest");
> ConfigHelper.setRpcPort(job.getConfiguration(), "9160");
> ConfigHelper.setInitialAddress(job.getConfiguration(), "xxxx");
> ConfigHelper.setPartitioner(job.getConfiguration(),
> "org.apache.cassandra.dht.RandomPartitioner");
>
>
>
> SlicePredicate sp =new SlicePredicate();
>
> ByteBuffer startKey = ByteBuffer.wrap("".getBytes());
> ByteBuffer endKey = ByteBuffer.wrap("".getBytes());
> SliceRange range = new SliceRange();
> range.setStart(startKey);
> range.setFinish(endKey);
> range.setCount(Integer.MAX_VALUE);
>
> sp.setSlice_range(range);
>
> ConfigHelper.setInputSlicePredicate(job.getConfiguration(), sp);
>
> Long start = System.currentTimeMillis();
> job.waitForCompletion(true);
> logger.info(String.format("Job Finished in " +
> (System.currentTimeMillis() - start) / 1000.0 + " seconds"));
>
> return 0;
> }
> }
> java.lang.RuntimeException: InvalidRequestException(why:Expected 8 or 0 byte
> long (2))
> at
> org.apache.cassandra.hadoop.ColumnFamilyRecordReader$RowIterator.maybeInit(ColumnFamilyRecordReader.java:260)
> at
> org.apache.cassandra.hadoop.ColumnFamilyRecordReader$RowIterator.computeNext(ColumnFamilyRecordReader.java:275)
> at
> org.apache.cassandra.hadoop.ColumnFamilyRecordReader$RowIterator.computeNext(ColumnFamilyRecordReader.java:172)
> at
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:136)
> at
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:131)
> at
> org.apache.cassandra.hadoop.ColumnFamilyRecordReader.nextKeyValue(ColumnFamilyRecordReader.java:131)
> at
> org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:423)
> at
> org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67)
> at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:143)
> at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:621)
> at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
> at
> org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
> Caused by: InvalidRequestException(why:Expected 8 or 0 byte long (2))
> at
> org.apache.cassandra.thrift.Cassandra$get_range_slices_result.read(Cassandra.java:12088)
> at
> org.apache.cassandra.thrift.Cassandra$Client.recv_get_range_slices(Cassandra.java:732)
> at
> org.apache.cassandra.thrift.Cassandra$Client.get_range_slices(Cassandra.java:704)
> at
> org.apache.cassandra.hadoop.ColumnFamilyRecordReader$RowIterator.maybeInit(ColumnFamilyRecordReader.java:238)
> ... 11 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira