I'm not sure this belongs to HBase or MRUnit.
It's about HBase Result object for MapReduce.





I have some mapreduce to calculate data in hbase. I try to use MRUnit to test 
it.









public void map(ImmutableBytesWritable row, Result value,
                                Context context) throws IOException, 
InterruptedException {


                        
                        byte[] a = value.getValue(Bytes.toBytes("f"),
                                        Bytes.toBytes("a"));
                        byte[] b = value.getValue(Bytes.toBytes("f"),
                                        Bytes.toBytes("b"));
                        byte[] c = value.getValue(Bytes.toBytes("f"),
                                        Bytes.toBytes("c"));
                        byte[] d = value.getValue(Bytes.toBytes("f"),
                                        Bytes.toBytes("e"));
                        byte[] e = value.getValue(Bytes.toBytes("f"),
                                        Bytes.toBytes("e"));
connect(a,b,c,d,e);...}
in Test case code, I manually create a Result object to init some keyvalue data.







@Test
        public void testEventMap() throws IOException 
        {
                ArrayList<KeyValue> list = new ArrayList<KeyValue>();
                KeyValue k1 = KeyValueTestUtil.create("1", "f", "a", 1, 
"2013-02-01 12:23:23");
                KeyValue k2 = KeyValueTestUtil.create("1", "f", "b", 2, "1");
                KeyValue k3 = KeyValueTestUtil.create("1", "f", "c", 3, "1");
                KeyValue k4 = KeyValueTestUtil.create("1", "f", "d", 4,"1");
                KeyValue k5 = KeyValueTestUtil.create("1", "f", "e", 5, "1");









list.add(k1);
                list.add(k2);
                list.add(k3);
                
                list.add(k4);
                list.add(k5);

                
                
                ImmutableBytesWritable b = new 
ImmutableBytesWritable(Bytes.toBytes("1"));
                Result r = new Result();
                
                mapdriver.withInput(b, new Result(list));
                mapdriver.withOutput(new Text("1-20130201-1-1-1"), new 
IntWritable(1));}
The problem is Output is " 1-20130201-null-1-1" incorrect!!
I've adjust the list.add orders, to 
list.add(k2)list.add(k1)list.add(k3)list.add(k4)list.add(k5)
the result is changed to "null-null-null-null-null"
It seems KeyValue orders in Result object impacts the output. Why?
Anybody has suggestions about it?
Thanks.



                                                                                
                  

Reply via email to