问题标签 [mrunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
168 浏览

mapreduce - MRUnit 和 AvroMapper

AvroMapper需要2个参数:

mapDriver 需要 4 个参数:

我可以MRUnit用于单元测试AvroMapper吗?

0 投票
2 回答
2320 浏览

java - 找到了类 org.apache.hadoop.mapreduce.TaskInputOutputContext,但接口是预期的

我正在尝试使用MRUnit 1.0.0 来测试 Hadoop v2 Reducer,但尝试时出现异常:

我假设这意味着我在某种程度上不匹配 Hadoop API 的版本,就像在这个 SO question中一样,但我不确定问题出在哪里。我正在使用 Maven 来引入依赖项,使用来自 repo.hortonworks.com 的 Hadoop 2.2.0.2.0.6.0-76 和来自 repo1.maven.org 的 MRUnit 1.0.0:

测试用例如下:

在其他地方,在HH包中,Reduce 被定义为一个非常简单的内部类:

看到什么奇怪的东西了吗?MRUnit 是否尝试使用旧/新版本的 API?

0 投票
0 回答
445 浏览

hadoop - MRunit:如何测试自定义排序比较器?

我正在尝试使用 MRunit 来测试我的sortComparatorClass. 似乎 MRunit 应该能够使用该setKeyOrderComparator方法执行此操作,但是当我运行mapReduceDriver它时,它没有调用类的compare()方法SortComparator
很确定我在使用 MRunit API 时做错了什么。

这是我的单元测试代码:

这是我的测试sortComparator

当我运行测试时,我得到这个输出:

但是该类没有输出sortComparator- 它没有对键进行反向排序,所以我知道我的comparator()方法没有被调用。

谁能告诉我我做错了什么?是否可以使用 MRunit 来测试我自己的比较器类?有没有更好的方法来为自定义比较器类进行单元测试?

仅供参考,以下是我的 Pom 的相关依赖项:

0 投票
1 回答
570 浏览

java - 带有模拟上下文的 Hadoop 单元测试

我正在尝试为 hadoop 作业编写单元测试。问题是映射器使用传递给它的 Context 参数来确定此时它正在读取哪个文件。它进行以下调用:

但是,在使用 MRUnit 为映射器编写单元测试时,我似乎找不到任何方法来模拟这个 Context 对象。甚至 MapDriver 似乎也没有任何设置新 Context 对象的选项。有没有办法可以为这个映射器类编写单元测试?

0 投票
1 回答
294 浏览

java - Hadoop Junit测试面临编译错误

我是 hadoop 新手,我正在关注 hadop 权威学习指南。我正在使用 MRunit 进行单元测试,但是在为减少任务进行测试时,我遇到了编译错误。

下面是我的reduce java文件:MaxTemperatureReducer.java

下面是我的 Junit 测试文件:MaxTemperatureReducerTest.java

当我使用驱动程序类的withReducer() 方法将reduceclass 的实例,即new MaxTemperatureReducer() 传递给我的reducerdriver 时。我得到低于编译错误。

请帮帮我,因为我可以看到 MaxTemperatureMapper 类扩展了 Reducer 类,我无法理解为什么 withReducer() 方法不接受 MaxTemperatureReducer 实例。

谢谢, 普里亚兰詹

0 投票
1 回答
412 浏览

java - 使用 MrUnit 对 Mongo-Hadoop 作业进行单元测试

您如何对 mongo-hadoop 作业进行单元测试?

到目前为止我的尝试:

产生这个输出:

类 org.bson.BasicBSONObject 的 io.serializations 中没有适用的类在 conf 中实现序列化

java.lang.IllegalStateException at org.apache.hadoop.mrunit.internal.io.Serialization.copy(Serialization.java:67) at org.apache.hadoop.mrunit.internal.io.Serialization.copy(Serialization.java:91 ) 在 org.apache.hadoop.mrunit.TestDriver.copy(TestDriver.java:608) 在 org.apache.hadoop 的 org.apache.hadoop.mrunit.internal.io.Serialization.copyWithConf(Serialization.java:104)。 mrunit.TestDriver.copyPair(TestDriver.java:612) 在 org.apache.hadoop.mrunit.MapDriverBase.addInput(MapDriverBase.java:118) 在 org.apache.hadoop.mrunit.MapDriverBase.withInput(MapDriverBase.java:207) ...

0 投票
1 回答
956 浏览

mapreduce - 带有 HBase 和 MapReduce 的 MRUnit 在序列化时出现错误

我正在尝试使用 MRUnit 测试我的 MapReduce,当我进行集成测试时,它可以工作。我有一些单元测试,我也想通过它们。

我的 MRUnit 驱动程序和 MapReduce 类是:

当我定义输入时,我得到一个错误:

我猜这是因为它不喜欢 Result 和 KeyValue 对象,因为它们不是可写的,但我不明白为什么集成测试会起作用。当所有这些对象都实现 Writable 时,它​​之前使用 Hbase 0.94,现在我使用 HBase 0.96。任何线索我应该如何在这里使用 MRUnit?

0 投票
1 回答
880 浏览

maven - Avro with MRUnit gives InstantiationException

I'm using:

  • hadoop-client 2.2.0
  • mrunit 1.0.0
  • avro 1.7.6
  • avro-mrunit 1.7.6

... and the entire thing is being built and tested using Maven.

I was getting a NullPointerException until I followed the instructions at MRUnit with Avro NullPointerException in Serialization.

Now I am getting an InstantiationException:

The Avro model looks like this:

The mapper looks like this:

The test that is failing (the only test I have at the moment) looks like this:

I'm pretty new with both Avro and MRUnit, so I am still trying to fully understanding the workings between them. In the unit test output I see warnings about log4j and don't know for certain that this isn't part of the problem (thought I doubt it).

0 投票
2 回答
862 浏览

java - MRUnit 在 hbase Result 对象中传递值

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

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

0 投票
0 回答
76 浏览

hadoop - 使用 MRUnit 测试 GenericWritable

比如说,我有一个像下面这样的类:

这是映射器:

有没有办法在 MRUnit 中使用 MapDriver 测试映射器?注意:我问的原因是因为使用 .withOutput 不会验证结果

或者我应该使用 .run() 方法并手动断言结果?