在测试我的ApacheSpark应用程序时,我想进行一些集成测试。出于这个原因,我创建了一个本地spark应用程序(启用了配置单元支持),在其中执行测试。如何在每次测试后清除derbyMetastore,以便下一次测试再次拥有干净的环境。我不想做的是在每次测试后重新启动spark应用程序。是否有任何最佳实践可以实现我想要的? 最佳答案 我认为为集成测试引入一些应用程序级逻辑打破了集成测试的概念。从我的角度来看,正确的方法是为每个测试重新启动应用程序。无论如何,我相信另一种选择是为每个测试启动/停止SparkContext。它应该清除
我正在尝试在Spark上运行一些转换,它在集群(YARN、linux机器)上运行良好。但是,当我尝试在本地计算机(Windows7)上运行单元测试时,出现错误:java.io.IOException:Couldnotlocateexecutablenull\bin\winutils.exeintheHadoopbinaries.atorg.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:318)atorg.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:333)ato
我正在阅读与Hadoop的HIPI图像处理API相关的论文,网址为:http://cs.ucsb.edu/~cmsweeney/papers/undergrad_thesis.pdf在解释其中的协方差示例时,该论文说“因为HIPI为每个映射任务分配一个图像,所以很容易随机抽取100个补丁的图像并执行此计算”。但是论文中显示的第一个图描绘了一个架构,其中多个图像被输入到一个maptask中!令人惊讶的是,他们写道一张图像由一个maptask处理,因为它会产生太多maptask,因为他们也在解决小文件问题。如果这是真的,那么带有MultithreadedMapper的序列文件是一个更好的选
谁能解释一下使用MR-Unit进行单元测试MR作业与使用JUnit和Mockito相比有什么好处?具体来说,有哪些事情是我可以用JUnit做而不能做的,或者更难做?我的想法是将所有逻辑从映射器/缩减器转移到帮助器类,并且只验证是否在模拟上调用了适当的方法。为什么要使用MR-Unit? 最佳答案 我认为mrunit为您提供的最重要的东西是用于测试mapreduce作业的DSL。单元测试应该是关于可读性和讲述故事的,因此如果您有一个适合该领域的API,那么编写测试和稍后理解它们会变得更容易。另一件可能同样重要的事情是它提供了比JUnit
我正在尝试使用MRUnit为我的hadoop作业实现单元测试.对于我自己的Writable,断言在withOutput(K2k2,V2v2)失败。我已经尝试覆盖Object的equals(Objecto)方法,但这没有帮助。当两个Writable实际上相同时,有什么想法可以告诉MRUnit吗? 最佳答案 为了使runTest()成功,必须覆盖inthashCode()。 关于unit-testing-MR单元:Testsfailwithcustomwritable,我们在StackOve
我需要每隔15分钟将数据插入到存储为ORC的不同表中并聚合值。那些INSERT使用动态分区。每个INSERT都会在分区中创建一个新文件,这会减慢我的聚合查询速度。我在网上搜索,发现了一些关于这个案例的主题,比如thisone.所以我在hive-site.xml中添加了这些设置:hive.merge.mapfiles=true;hive.merge.mapredfiles=true;hive.merge.tezfiles=truehive.merge.smallfiles.avgsize=256000000;但即使使用这些设置,每次插入都会在每个分区上创建一个新文件,并且文件不会合并。有
我正在运行一个具有M个核心实例和N个任务实例的AmazonEMR集群。我的作业每天运行多次并且对时间敏感,因此我保持M核心实例24/7全天候运行,这样我就没有与S3之间的数据传输开销。N个任务节点正在根据需要动态启动和终止。M个核心节点为c1.mediums,N个任务节点为m2.xlarge。有没有办法为每个实例配置mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduce.tasks.maximum?对于我想要的核心节点:mapred.tasktracker.map.tasks.maximum=2mapred.task
我自己实现了WritableComparable,但是我找不到适合单元测试write和readFields方法的好东西。有什么想法吗? 最佳答案 也许您可以找到更简单的方法来测试您的可写对象,但手动执行序列化/反序列化也可以。例如:MyUtils.java:...importorg.apache.commons.io.IOUtils;...publicstaticbyte[]serialize(Writablewritable)throwsIOException{ByteArrayOutputStreamout=newByteArr
这让我发疯了——我觉得自己像个白痴,想弄清楚如何做到这一点!我正在构建一个使用Oozie客户端库来运行工作流的应用程序。真的很简单,我想为我的代码构建一些测试,这样我就可以检查我是否在做正确的事情实际代码-感谢oozie客户端库-非常简单。我已经安装了Hadoop并且可以运行标准的wordcount提供的示例,没有任何问题,但是我不知道如何通过Oozie运行东西,它让我抓狂。所以我想我会作弊并问一些知道的人(蠕变蠕变)。我如何转换:bin/hadoopjarhadoop*examples*.jarwordcountinput/somedataoutputOozie工作流?我假设它是一个
我是新来的,但需要知道对通过ApacheHadoop编写的程序进行单元测试的最佳方法。我知道我们可以用jUnit方式为map和reduce方法中的逻辑编写单元测试用例。我们也可以对涉及的其他逻辑做同样的事情,但这并不能保证它经过良好的测试并且可以在实际运行环境中工作。我读过关于MRUnit的文章,但它似乎也与我上面提到的类似,但方式更成熟。但它也不会作为真正的mapreduce工作运行,而是一个被mock的工作。任何帮助,将不胜感激。谢谢。 最佳答案 你当然有其他选择。稍微用谷歌搜索一下,你自己就会得到它。在这里,我为您做到了!这是