Table des matières
导读
MRunit简介

MRUnit使用技巧

Jun 07, 2016 pm 04:33 PM
pour 使用技巧

导读 为了能测试编写的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
Copier après la connexion

需要做的事情是查找所有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);
    }
  }
}
Copier après la connexion

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));
  }
}
Copier après la connexion

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();
  }
}
Copier après la connexion

使用过JUnit的就应该知道怎么运行上面的代码了,这里就不重复了。

MRUint可以测试单个Map,单个Reduce和一个MapReduce或者多个MapReduce程序。
详细的可以参考官网文档:MRUnit Tutorial

参考:http://www.cnblogs.com/gpcuster/archive/2009/10/04/1577921.html

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment utiliser le langage Go pour l'analyse financière quantitative ? Comment utiliser le langage Go pour l'analyse financière quantitative ? Jun 11, 2023 am 08:51 AM

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

Comment utiliser le langage Go pour le data mining ? Comment utiliser le langage Go pour le data mining ? Jun 10, 2023 am 08:39 AM

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 écrire l'algorithme d'arbre couvrant minimum en utilisant C# Comment écrire l'algorithme d'arbre couvrant minimum en utilisant C# Sep 19, 2023 pm 01:55 PM

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 SEO Comment utiliser PHP pour développer des fonctions simples d'optimisation SEO Sep 20, 2023 pm 04:18 PM

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

Comment utiliser nginx pour empêcher les hotlinking Comment utiliser nginx pour empêcher les hotlinking Jun 11, 2023 pm 01:25 PM

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 simple : un guide complet sur les techniques d'utilisation de la source miroir pip Solution simple : un guide complet sur les techniques d'utilisation de la source miroir pip Jan 16, 2024 am 10:31 AM

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.

Maîtriser les avantages et les techniques de fonctionnement de l'environnement virtuel conda Maîtriser les avantages et les techniques de fonctionnement de l'environnement virtuel conda Feb 18, 2024 pm 07:46 PM

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 mieux régner en C++ Comment utiliser l'algorithme diviser pour mieux régner en C++ Sep 20, 2023 pm 03:19 PM

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.

See all articles