Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Threaded 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.

       
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB