0

我正在修改 Record Reader 中的 MapReduce 程序,并想为 mapper 编写一个测试用例来调用自定义的 InputFormat 或 Record Reader。我已经修改了记录阅读器的测试用例,但记录阅读器测试用例不是 mrunit 的。

由于 MapDriver.newMapDriver 下未列出 withInputFormat 函数,如何从 Mapper 调用自定义的 Record Reader?

请找到我的代码快照:

@Before
public void setUp(){
MapDriver<Object, Text, Text, Text> mapDriver = MapDriver.newMapDriver(new myMapper());
}

@Test
public void testFunction1() throws IOException {
mapDriver.withInput(...).withOutput(...).runTest();
}

谢谢

4

1 回答 1

0

我正在检查MRUnitAPI,所以。如果你想添加一个自定义,RecordReader我猜你必须有一个自定义InputFormat,因为必须将自定义 RecordReader 分配到自定义类的createRecordReader方法中。InputFormat

因此,MRUnitAPI 允许您使用自定义分配自InputFormat定义OutputFormat

public MapDriver<K1,V1,K2,V2> withOutputFormat(Class<? extends org.apache.hadoop.mapreduce.OutputFormat> outputFormatClass,
                                      Class<? extends org.apache.hadoop.mapreduce.InputFormat> inputFormatClass)

Configure Mapper to output with a real OutputFormat. Set InputFormat to read 
output back in for use with run* methods

Parameters:
outputFormatClass -
inputFormatClass -

Returns:
this for fluent style

基于此,您可以调用mapDriver.withOutFormat(customOutputFormat.class, customInputFormat.class). 通过这种方式,您可以使用 RecordReader 进行测试。

于 2020-02-13T04:36:35.480 回答