Jadual Kandungan
导读
MRunit简介
Rumah pangkalan data tutorial mysql MRUnit使用技巧

MRUnit使用技巧

Jun 07, 2016 pm 04:33 PM
untuk Petua

导读 为了能测试编写的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
Salin selepas log masuk

需要做的事情是查找所有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);
    }
  }
}
Salin selepas log masuk

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));
  }
}
Salin selepas log masuk

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();
  }
}
Salin selepas log masuk

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

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

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menggunakan bahasa Go untuk analisis kewangan kuantitatif? Bagaimana untuk menggunakan bahasa Go untuk analisis kewangan kuantitatif? Jun 11, 2023 am 08:51 AM

Dalam bidang kewangan moden, dengan peningkatan sains data dan teknologi kecerdasan buatan, kewangan kuantitatif secara beransur-ansur menjadi arah yang semakin penting. Sebagai bahasa pengaturcaraan ditaip secara statik yang boleh memproses data dengan cekap dan menggunakan sistem teragih, bahasa Go secara beransur-ansur menarik perhatian dalam bidang kewangan kuantitatif. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melakukan analisis kewangan kuantitatif Kandungan khusus adalah seperti berikut: Mendapatkan data kewangan Pertama, kita perlu mendapatkan data kewangan. Keupayaan pengaturcaraan rangkaian bahasa Go sangat berkuasa dan boleh digunakan untuk mendapatkan pelbagai data kewangan. Bandingkan

Bagaimana untuk menggunakan bahasa Go untuk perlombongan data? Bagaimana untuk menggunakan bahasa Go untuk perlombongan data? Jun 10, 2023 am 08:39 AM

Dengan kebangkitan data besar dan perlombongan data, semakin banyak bahasa pengaturcaraan telah mula menyokong fungsi perlombongan data. Sebagai bahasa pengaturcaraan yang pantas, selamat dan cekap, bahasa Go juga boleh digunakan untuk perlombongan data. Jadi, bagaimana untuk menggunakan bahasa Go untuk perlombongan data? Berikut adalah beberapa langkah dan teknik penting. Pemerolehan Data Pertama, anda perlu mendapatkan data. Ini boleh dicapai melalui pelbagai cara, seperti merangkak maklumat pada halaman web, menggunakan API untuk mendapatkan data, membaca data daripada pangkalan data, dsb. Bahasa Go disertakan dengan HTTP yang kaya

Bagaimana untuk menulis algoritma pokok rentang minimum menggunakan C# Bagaimana untuk menulis algoritma pokok rentang minimum menggunakan C# Sep 19, 2023 pm 01:55 PM

Cara menggunakan C# untuk menulis algoritma pepohon rentang minimum Algoritma pepohon rentang minimum ialah algoritma teori graf yang penting, yang digunakan untuk menyelesaikan masalah ketersambungan graf. Dalam sains komputer, pokok rentang minimum merujuk kepada pokok rentang bagi graf bersambung di mana jumlah pemberat semua tepi pokok rentang adalah yang terkecil. Artikel ini akan memperkenalkan cara menggunakan C# untuk menulis algoritma pepohon rentang minimum dan memberikan contoh kod khusus. Pertama, kita perlu mentakrifkan struktur data graf untuk mewakili masalah. Dalam C#, anda boleh menggunakan matriks bersebelahan untuk mewakili graf. Matriks bersebelahan ialah tatasusunan dua dimensi di mana setiap elemen mewakili

Cara menggunakan PHP untuk membangunkan fungsi pengoptimuman SEO mudah Cara menggunakan PHP untuk membangunkan fungsi pengoptimuman SEO mudah Sep 20, 2023 pm 04:18 PM

Cara menggunakan PHP untuk membangunkan fungsi pengoptimuman SEO mudah SEO (SearchEngineOptimization), atau pengoptimuman enjin carian, merujuk kepada meningkatkan kedudukan laman web dalam enjin carian dengan menambah baik struktur dan kandungan laman web, dengan itu memperoleh lebih banyak trafik organik. Dalam pembangunan laman web, bagaimana untuk menggunakan PHP untuk melaksanakan fungsi pengoptimuman SEO yang mudah? Artikel ini akan memperkenalkan beberapa teknik pengoptimuman SEO yang biasa digunakan dan contoh kod khusus untuk membantu pembangun melaksanakan pengoptimuman SEO dalam projek PHP. 1. Penggunaan yang mesra

Cara menggunakan nginx untuk mengelakkan hotlinking Cara menggunakan nginx untuk mengelakkan hotlinking Jun 11, 2023 pm 01:25 PM

Dengan populariti Internet, semakin banyak laman web menyediakan fungsi pautan luaran untuk gambar, video dan sumber lain. Walau bagaimanapun, fungsi pautan luaran ini mudah dicuri. Hotlinking bermaksud tapak web lain menggunakan gambar, video dan sumber lain di tapak web anda untuk memaparkan terus sumber ini di tapak web mereka sendiri melalui alamat rujukan dan bukannya memuat turunnya ke pelayan mereka sendiri. Dengan cara ini, tapak web pautan panas boleh menggunakan trafik tapak web anda dan sumber lebar jalur secara percuma, yang membazir sumber dan menjejaskan kelajuan tapak web. Untuk menangani masalah ini, Nginx boleh digunakan untuk menghalang hotlinking. Nginx adalah

Penyelesaian mudah: Panduan lengkap untuk teknik penggunaan sumber cermin pip Penyelesaian mudah: Panduan lengkap untuk teknik penggunaan sumber cermin pip Jan 16, 2024 am 10:31 AM

Penyelesaian satu klik: Kuasai dengan pantas kemahiran penggunaan sumber cermin pip Pengenalan: pip ialah alat pengurusan pakej yang paling biasa digunakan untuk Python, yang boleh memasang, meningkatkan dan mengurus pakej Python dengan mudah. Walau bagaimanapun, disebabkan oleh sebab yang terkenal, menggunakan sumber cermin lalai untuk memuat turun pakej pemasangan adalah lebih perlahan untuk menyelesaikan masalah ini, kita perlu menggunakan sumber cermin domestik. Artikel ini akan memperkenalkan cara cepat menguasai kemahiran penggunaan sumber cermin pip dan memberikan contoh kod khusus. Sebelum anda mula, fahami konsep sumber cermin pip.

Cara menggunakan algoritma divide-and-conquer dalam C++ Cara menggunakan algoritma divide-and-conquer dalam C++ Sep 20, 2023 pm 03:19 PM

Cara menggunakan algoritma divide-and-conquer dalam C++ Algoritma divide-and-conquer ialah kaedah yang menguraikan masalah kepada beberapa sub-masalah dan kemudian menggabungkan penyelesaian kepada sub-masalah untuk mendapatkan penyelesaian kepada masalah asal. Ia mempunyai pelbagai aplikasi dan boleh digunakan untuk menyelesaikan pelbagai jenis masalah, termasuk masalah matematik, masalah menyusun, masalah graf, dll. Artikel ini akan memperkenalkan cara menggunakan algoritma bahagi dan takluk dalam C++ dan memberikan contoh kod khusus. 1. Idea asas Idea asas algoritma bahagi-dan-takluk adalah untuk menguraikan masalah besar kepada beberapa sub-masalah yang lebih kecil, menyelesaikan setiap sub-masalah secara rekursif, dan akhirnya menggabungkan sub-masalah tersebut.

Kuasai kelebihan dan teknik pengendalian persekitaran maya conda Kuasai kelebihan dan teknik pengendalian persekitaran maya conda Feb 18, 2024 pm 07:46 PM

Untuk memahami kelebihan dan teknik penggunaan persekitaran maya conda, contoh kod khusus diperlukan adalah bahasa pengaturcaraan yang sangat popular dan digunakan secara meluas dalam bidang seperti pengkomputeran saintifik, analisis data dan kecerdasan buatan. Dalam ekosistem Python, terdapat banyak perpustakaan dan alatan pihak ketiga, dan versi perpustakaan yang berbeza mungkin perlu digunakan dalam projek yang berbeza. Untuk menguruskan kebergantungan perpustakaan ini, persekitaran maya conda menjadi alat penting. conda ialah sistem pengurusan pakej sumber terbuka dan sistem pengurusan persekitaran yang boleh mencipta dan

See all articles