Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Plain View
HBase >> mail # user >> HBase Result object problem when testing MapReduce


Copy link to this message
-
HBase Result object problem when testing MapReduce

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.