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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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

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

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 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

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 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++ 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.

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
