|
|
-
HBase Result object problem when testing MapReducebigdata 2013-02-27, 05:17
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. |