2012/1/28 Vamshi Krishna <[email protected]>: > Hi, here i am trying to read rows from a table, and put them to a file as > it is.For that my mapper class and run method are as shown below. (Correct > me if any thing wrong). > > public static class SIMapper extends > TableMapper<ImmutableBytesWritable,Text> { > Configuration config=HBaseConfiguration.create(); > > private Text TABLE=new Text("HS3"); > > public void map(ImmutableBytesWritable row, Text value, Context > context) throws IOException { > > try { > context.write(row, TABLE); > } catch (InterruptedException e) { > throw new IOException(e); > } > > } > > } > > > Run method:--- > > public int run(String[] args) throws Exception { > > Job job = new Job(getConf()); > job.setJobName("Job-1"); > job.setJarByClass(setjar.class); > > Scan s=new Scan(); > s.setCacheBlocks(false); > s.setCaching(1000); > > TableMapReduceUtil.initTableMapperJob(args[0],s, SIMapper.class, > null,null, job); // args[0] is the table name, which is the input table > for mapper. > TableMapReduceUtil.addDependencyJars(job); > > FileOutputFormat.setOutputPath(job, new Path(args[1])); > > > return job.waitForCompletion(true)? 0:1 ; > } > > When i try to execute the job, i am getting following error. I don't know > what is the mistake.For what the LongWritable it is expected? > > 12/01/28 11:57:23 INFO mapred.JobClient: map 0% reduce 0% > 12/01/28 11:57:34 INFO mapred.JobClient: Task Id : > attempt_201201281010_0004_m_000000_0, Status : FAILED > java.io.IOException: Type mismatch in key from map: expected > org.apache.hadoop.io.LongWritable, recieved > org.apache.hadoop.hbase.io.ImmutableBytesWritable > at > org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:845) > at > org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:541) > at > org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80) > at org.apache.hadoop.mapreduce.Mapper.map(Mapper.java:124) > at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) > 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.Child.main(Child.java:170) > > please some body help.. > > -- > *Regards* > * > Vamshi Krishna > *
You have to replace the two null values from initTableMapper with the classes that you have for key and value. Please see javadoc for TableMapReduceUtil class [1]. [1] http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html -- Ioan Eugen Stan http://ieugen.blogspot.com/
