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使用技巧, 感谢原作者分享。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans le domaine de la finance moderne, avec l'essor de la science des données et de la technologie de l'intelligence artificielle, la finance quantitative est progressivement devenue une direction de plus en plus importante. En tant que langage de programmation typé statiquement capable de traiter efficacement les données et de déployer des systèmes distribués, le langage Go a progressivement attiré l'attention dans le domaine de la finance quantitative. Cet article présentera comment utiliser le langage Go pour effectuer une analyse financière quantitative. Le contenu spécifique est le suivant : Obtention de données financières Tout d'abord, nous devons obtenir des données financières. Les capacités de programmation réseau du langage Go sont très puissantes et peuvent être utilisées pour obtenir diverses données financières. Comparer

Avec l'essor du Big Data et de l'exploration de données, de plus en plus de langages de programmation ont commencé à prendre en charge les fonctions d'exploration de données. En tant que langage de programmation rapide, sûr et efficace, le langage Go peut également être utilisé pour l'exploration de données. Alors, comment utiliser le langage Go pour le data mining ? Voici quelques étapes et techniques importantes. Acquisition de données Tout d'abord, vous devez obtenir les données. Cela peut être réalisé par divers moyens, tels que l'exploration d'informations sur des pages Web, l'utilisation d'API pour obtenir des données, la lecture de données à partir de bases de données, etc. Le langage Go est livré avec un HTTP riche

Comment utiliser C# pour écrire l'algorithme d'arbre couvrant minimum L'algorithme d'arbre couvrant minimum est un algorithme important de la théorie des graphes, qui est utilisé pour résoudre le problème de connectivité des graphiques. En informatique, un arbre couvrant minimum fait référence à un arbre couvrant d'un graphe connecté dans lequel la somme des poids de toutes les arêtes de l'arbre couvrant est la plus petite. Cet article explique comment utiliser C# pour écrire l'algorithme d'arbre couvrant minimum et fournit des exemples de code spécifiques. Tout d’abord, nous devons définir une structure de données graphique pour représenter le problème. En C#, vous pouvez utiliser une matrice de contiguïté pour représenter un graphique. Une matrice de contiguïté est un tableau à deux dimensions dans lequel chaque élément représente

Comment utiliser PHP pour développer des fonctions simples d'optimisation du référencement Le référencement (SearchEngineOptimization), ou optimisation des moteurs de recherche, fait référence à l'amélioration du classement du site Web dans les moteurs de recherche en améliorant la structure et le contenu du site Web, obtenant ainsi plus de trafic organique. Dans le développement de sites Web, comment utiliser PHP pour mettre en œuvre des fonctions simples d’optimisation SEO ? Cet article présentera quelques techniques d'optimisation SEO couramment utilisées et des exemples de code spécifiques pour aider les développeurs à mettre en œuvre l'optimisation SEO dans les projets PHP. 1. Utilisation conviviale

Avec la popularité d’Internet, de plus en plus de sites Web proposent des fonctions de liens externes vers des images, des vidéos et d’autres ressources. Cependant, cette fonction de lien externe est facile à voler. Le hotlinking signifie que d'autres sites Web utilisent des images, des vidéos et d'autres ressources sur votre site Web pour afficher directement ces ressources sur leur propre site Web via l'adresse de référence au lieu de les télécharger sur leur propre serveur. De cette façon, les sites Web hotlink peuvent utiliser gratuitement les ressources de trafic et de bande passante de votre site Web, ce qui gaspille des ressources et affecte la vitesse du site Web. Pour résoudre ce problème, Nginx peut être utilisé pour empêcher les hotlinking. Nginx est

Solution en un clic : maîtrisez rapidement les compétences d'utilisation de la source miroir pip Introduction : pip est l'outil de gestion de packages le plus couramment utilisé pour Python, qui peut facilement installer, mettre à niveau et gérer les packages Python. Cependant, pour des raisons bien connues, l'utilisation de la source miroir par défaut pour télécharger le package d'installation est plus lente. Afin de résoudre ce problème, nous devons utiliser une source miroir nationale. Cet article expliquera comment maîtriser rapidement les compétences d'utilisation de la source miroir pip et fournira des exemples de code spécifiques. Avant de commencer, comprenez le concept de source miroir pip.

Pour comprendre les avantages et les techniques d'utilisation de l'environnement virtuel conda, des exemples de code spécifiques sont nécessaires. Python est un langage de programmation très populaire et largement utilisé dans des domaines tels que le calcul scientifique, l'analyse de données et l'intelligence artificielle. Dans l'écosystème Python, il existe de nombreuses bibliothèques et outils tiers, et différentes versions des bibliothèques peuvent devoir être utilisées dans différents projets. Afin de gérer les dépendances de ces bibliothèques, l'environnement virtuel conda devient un outil important. conda est un système de gestion de packages et un système de gestion d'environnement open source qui peut facilement créer et

Comment utiliser l'algorithme diviser pour régner en C++ L'algorithme diviser pour régner est une méthode qui décompose un problème en plusieurs sous-problèmes puis combine les solutions des sous-problèmes pour obtenir une solution au problème d'origine. Il a un large éventail d'applications et peut être utilisé pour résoudre divers types de problèmes, notamment des problèmes mathématiques, des problèmes de tri, des problèmes graphiques, etc. Cet article explique comment utiliser l'algorithme diviser pour mieux régner en C++ et fournit des exemples de code spécifiques. 1. Idée de base L'idée de base de l'algorithme diviser pour régner est de décomposer un gros problème en plusieurs sous-problèmes plus petits, de résoudre chaque sous-problème de manière récursive et enfin de fusionner les sous-problèmes.
