gpt4 book ai didi

java - MRUnit 在 hbase 结果对象中传递值

转载 作者:行者123 更新时间:2023-12-01 17:14:00 25 4
gpt4 key购买 nike

我正在使用 MRUnit 测试我的映射器。我将键和值列表作为输入从测试类传递给映射器。问题是:

String key=1234_abc;
ArrayList<KeyValue> list = new ArrayList<KeyValue>();
KeyValue k1 = new KeyValue(Bytes.toBytes(key),"cf".getBytes(), "Val1".getBytes(),Bytes.toBytes("abc.com"));
KeyValue k2 = new KeyValue(Bytes.toBytes(key), "cf".getBytes(), "Val2".getBytes(),Bytes.toBytes("165"));
Result result = new Result(list);
mapDriver.withInput(key, result);

问题是在结果对象中仅保留第一个键值。其他的被存储为空。

最佳答案

问题是 HBase 按字典顺序存储列。看起来 Result(KeyValue[] kvs) 或 Result(List kvs) 构造函数期望的顺序相同。

这是解决方案!

TreeSet<KeyValue> set = new TreeSet<KeyValue>(KeyValue.COMPARATOR);

byte[] row = Bytes.toBytes("row01");
byte[] cf = Bytes.toBytes("cf");
set.add(new KeyValue(row, cf, "cone".getBytes(), Bytes.toBytes("row01_cone_one")));
set.add(new KeyValue(row, cf, "ctwo".getBytes(), Bytes.toBytes("row01_ctwo_two")));
set.add(new KeyValue(row, cf, "cthree".getBytes(), Bytes.toBytes("row01_cthree_three")));
set.add(new KeyValue(row, cf, "cfour".getBytes(), Bytes.toBytes("row01_cfour_four")));
set.add(new KeyValue(row, cf, "cfive".getBytes(), Bytes.toBytes("row01_cfive_five")));
set.add(new KeyValue(row, cf, "csix".getBytes(), Bytes.toBytes("row01_csix_six")));

KeyValue[] kvs = new KeyValue[set.size()];
set.toArray(kvs);

Result result = new Result(kvs);
mapDriver.withInput(key, result);

希望这会有所帮助!

关于java - MRUnit 在 hbase 结果对象中传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22856336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com