MRUnit使用技巧
导读 为了能测试编写的hadoop组件和MapReduce程序,一般有下面三种思路: 一、使用hadoop-eclipse插件来调试MapReduce程序,不过这在hadoop比较新的版本里已经不再提供了; 二、是配置jvm参数远程调试hadoop组件。这种方式用于读hadoop源代码比较适合,而如
导读
为了能测试编写的hadoop组件和MapReduce程序,一般有下面三种思路:
一、使用hadoop-eclipse插件来调试MapReduce程序,不过这在hadoop比较新的版本里已经不再提供了;
二、是配置jvm参数远程调试hadoop组件。这种方式用于读hadoop源代码比较适合,而如果用于远程调试MapReduce还是有点麻烦的;
详细参考的文档有:
http://blog.javachen.com/hadoop/2013/08/01/remote-debug-hadoop/
http://zhangjie.me/eclipse-debug-hadoop/
三、最后我选择了MRuinit来用于主要开发调试MapReduce应用程序。
MRunit简介
MRunit是用于做MapReduce单元测试的java库。使用apache发布,下载地址是:http://mrunit.apache.org/general/downloads.html
MRUnit测试框架是基于JUnit的。我们可以方便的测试Map ?Reduce程序。它适用于?0.20 , 0.23.x , 1.0.x , 2.x 等 Hadoop版本。
下面我们来做些MRunit的使用官方例子(SMS CDR (call details record) analysis):
使用记录如下
CDRID;CDRType;Phone1;Phone2;SMS Status Code 655209;1;796764372490213;804422938115889;6 353415;0;356857119806206;287572231184798;4 835699;1;252280313968413;889717902341635;0
需要做的事情是查找所有CDRType 为1的记录和它相关的状态码(SMS Status Code)
Map输出应该是:
6, 1
0, 1
代码如下:
public class SMSCDRMapper extends Mapper { private Text status = new Text(); private final static IntWritable addOne = new IntWritable(1); /** * Returns the SMS status code and its count */ protected void map(LongWritable key, Text value, Context context) throws java.io.IOException, InterruptedException { //655209;1;796764372490213;804422938115889;6 is the Sample record format String[] line = value.toString().split(";"); // If record is of SMS CDR if (Integer.parseInt(line[1]) == 1) { status.set(line[4]); context.write(status, addOne); } } }
Reduce 程序把最后的结果相加,程序如下:
public class SMSCDRReducer extends Reducer { protected void reduce(Text key, Iterable values, Context context) throws java.io.IOException, InterruptedException { int sum = 0; for (IntWritable value : values) { sum += value.get(); } context.write(key, new IntWritable(sum)); } }
MRunit的测试程序如下:
import java.util.ArrayList; import java.util.List; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mrunit.mapreduce.MapDriver; import org.apache.hadoop.mrunit.mapreduce.MapReduceDriver; import org.apache.hadoop.mrunit.mapreduce.ReduceDriver; import org.junit.Before; import org.junit.Test; public class SMSCDRMapperReducerTest { MapDriver mapDriver; ReduceDriver reduceDriver; MapReduceDriver mapReduceDriver; @Before public void setUp() { SMSCDRMapper mapper = new SMSCDRMapper(); SMSCDRReducer reducer = new SMSCDRReducer(); mapDriver = MapDriver.newMapDriver(mapper);; reduceDriver = ReduceDriver.newReduceDriver(reducer); mapReduceDriver = MapReduceDriver.newMapReduceDriver(mapper, reducer); } @Test public void testMapper() { mapDriver.withInput(new LongWritable(), new Text( "655209;1;796764372490213;804422938115889;6")); mapDriver.withOutput(new Text("6"), new IntWritable(1)); mapDriver.runTest(); } @Test public void testReducer() { List values = new ArrayList(); values.add(new IntWritable(1)); values.add(new IntWritable(1)); reduceDriver.withInput(new Text("6"), values); reduceDriver.withOutput(new Text("6"), new IntWritable(2)); reduceDriver.runTest(); } }
使用过JUnit的就应该知道怎么运行上面的代码了,这里就不重复了。
MRUint可以测试单个Map,单个Reduce和一个MapReduce或者多个MapReduce程序。
详细的可以参考官网文档:MRUnit Tutorial
参考:http://www.cnblogs.com/gpcuster/archive/2009/10/04/1577921.html
原文地址:MRUnit使用技巧, 感谢原作者分享。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Im Bereich des modernen Finanzwesens ist die quantitative Finanzierung mit dem Aufkommen der Datenwissenschaft und der Technologie der künstlichen Intelligenz nach und nach zu einer immer wichtigeren Richtung geworden. Als statisch typisierte Programmiersprache, die Daten effizient verarbeiten und verteilte Systeme bereitstellen kann, hat die Go-Sprache im Bereich der quantitativen Finanzen nach und nach Aufmerksamkeit erregt. In diesem Artikel wird die Verwendung der Go-Sprache zur Durchführung quantitativer Finanzanalysen vorgestellt. Der spezifische Inhalt ist wie folgt: Finanzdaten erhalten Zuerst müssen wir Finanzdaten erhalten. Die Netzwerkprogrammierfunktionen der Go-Sprache sind sehr leistungsfähig und können zum Abrufen verschiedener Finanzdaten verwendet werden. Vergleichen

Wie man mit PHP einfache SEO-Optimierungsfunktionen entwickelt SEO (SearchEngineOptimization) oder Suchmaschinenoptimierung bezieht sich auf die Verbesserung des Rankings der Website in Suchmaschinen durch Verbesserung der Struktur und des Inhalts der Website, wodurch mehr organischer Traffic erzielt wird. Wie kann man bei der Website-Entwicklung mit PHP einfache SEO-Optimierungsfunktionen implementieren? In diesem Artikel werden einige häufig verwendete SEO-Optimierungstechniken und spezifische Codebeispiele vorgestellt, um Entwicklern bei der Implementierung der SEO-Optimierung in PHP-Projekten zu helfen. 1. Freundliche Nutzung

Mit dem Aufkommen von Big Data und Data Mining unterstützen immer mehr Programmiersprachen Data Mining-Funktionen. Als schnelle, sichere und effiziente Programmiersprache kann die Go-Sprache auch für das Data Mining verwendet werden. Wie nutzt man also die Go-Sprache für das Data Mining? Hier sind einige wichtige Schritte und Techniken. Datenerfassung Zunächst müssen Sie die Daten beschaffen. Dies kann auf verschiedene Weise erreicht werden, z. B. durch das Crawlen von Informationen auf Webseiten, die Verwendung von APIs zum Abrufen von Daten, das Lesen von Daten aus Datenbanken usw. Die Go-Sprache verfügt über umfangreiches HTTP

So schreiben Sie mit C# den Minimum-Spanning-Tree-Algorithmus. Der Minimum-Spanning-Tree-Algorithmus ist ein wichtiger Algorithmus der Graphentheorie, der zur Lösung des Konnektivitätsproblems von Graphen verwendet wird. In der Informatik bezeichnet ein minimaler Spannbaum einen Spannbaum eines zusammenhängenden Graphen, bei dem die Summe der Gewichte aller Kanten des Spannbaums am kleinsten ist. In diesem Artikel wird erläutert, wie Sie mit C# den Minimal-Spanning-Tree-Algorithmus schreiben, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir eine Diagrammdatenstruktur definieren, um das Problem darzustellen. In C# können Sie eine Adjazenzmatrix zur Darstellung eines Diagramms verwenden. Eine Adjazenzmatrix ist ein zweidimensionales Array, in dem jedes Element dargestellt wird

Mit der Popularität des Internets bieten immer mehr Websites externe Linkfunktionen für Bilder, Videos und andere Ressourcen. Diese externe Linkfunktion kann jedoch leicht gestohlen werden. Hotlinking bedeutet, dass andere Websites Bilder, Videos und andere Ressourcen auf Ihrer Website verwenden, um diese Ressourcen über die Referenzadresse direkt auf ihrer eigenen Website anzuzeigen, anstatt sie auf ihren eigenen Server herunterzuladen. Auf diese Weise können Hotlink-Websites den Datenverkehr und die Bandbreitenressourcen Ihrer Website kostenlos nutzen, was Ressourcen verschwendet und die Website-Geschwindigkeit beeinträchtigt. Um dieses Problem zu lösen, kann Nginx verwendet werden, um Hotlinking zu verhindern. Nginx ist

Ein-Klick-Lösung: Beherrschen Sie schnell die Verwendungsfähigkeiten der Pip-Spiegelquelle. Einführung: Pip ist das am häufigsten verwendete Paketverwaltungstool für Python, mit dem Python-Pakete einfach installiert, aktualisiert und verwaltet werden können. Aus bekannten Gründen ist die Verwendung der Standard-Spiegelquelle zum Herunterladen des Installationspakets jedoch langsamer. Um dieses Problem zu lösen, müssen wir eine inländische Spiegelquelle verwenden. In diesem Artikel wird erläutert, wie Sie die Verwendungsfähigkeiten von Pip Mirror Source schnell beherrschen, und es werden spezifische Codebeispiele bereitgestellt. Bevor Sie beginnen, machen Sie sich mit dem Konzept der Pip-Spiegelquelle vertraut.

Um die Vorteile und Nutzungstechniken der virtuellen Conda-Umgebung zu verstehen, sind spezifische Codebeispiele erforderlich. Python ist eine sehr beliebte Programmiersprache und wird häufig in Bereichen wie wissenschaftlichem Rechnen, Datenanalyse und künstlicher Intelligenz verwendet. Im Python-Ökosystem gibt es viele Bibliotheken und Tools von Drittanbietern, und möglicherweise müssen in verschiedenen Projekten unterschiedliche Versionen der Bibliotheken verwendet werden. Um die Abhängigkeiten dieser Bibliotheken zu verwalten, wird die virtuelle Umgebung von Conda zu einem wichtigen Werkzeug. Conda ist ein Open-Source-Paketverwaltungssystem und ein Umgebungsverwaltungssystem, das einfach erstellen und erstellen kann

Verwendung des Divide-and-Conquer-Algorithmus in C++ Der Divide-and-Conquer-Algorithmus ist eine Methode, die ein Problem in mehrere Unterprobleme zerlegt und dann die Lösungen der Unterprobleme kombiniert, um eine Lösung für das ursprüngliche Problem zu erhalten. Es hat ein breites Anwendungsspektrum und kann zur Lösung verschiedener Arten von Problemen verwendet werden, einschließlich mathematischer Probleme, Sortierprobleme, Diagrammprobleme usw. In diesem Artikel wird die Verwendung des Divide-and-Conquer-Algorithmus in C++ vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Grundidee Die Grundidee des Divide-and-Conquer-Algorithmus besteht darin, ein großes Problem in mehrere kleinere Teilprobleme zu zerlegen, jedes Teilproblem rekursiv zu lösen und schließlich die Teilprobleme zusammenzuführen.
