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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









現代の金融の分野では、データサイエンスと人工知能技術の台頭により、定量的金融が徐々に重要な方向になってきています。 Go 言語は、データを効率的に処理し、分散システムを展開できる静的型プログラミング言語として、クオンツ ファイナンスの分野で徐々に注目を集めています。この記事では、Go 言語を使用して定量的な財務分析を行う方法を紹介します 具体的な内容は次のとおりです: 財務データの取得 まず、財務データを取得する必要があります。 Go 言語のネットワーク プログラミング機能は非常に強力で、さまざまな財務データを取得するために使用できます。比較する

ビッグデータとデータマイニングの台頭により、ますます多くのプログラミング言語がデータマイニング機能をサポートし始めています。 Go 言語は、高速、安全、効率的なプログラミング言語として、データ マイニングにも使用できます。では、Go 言語をデータマイニングに使用するにはどうすればよいでしょうか?ここでは、重要な手順とテクニックをいくつか紹介します。データの取得 まず、データを取得する必要があります。これは、Web ページ上の情報のクローリング、API を使用したデータの取得、データベースからのデータの読み取りなど、さまざまな手段を通じて実現できます。 Go 言語にはリッチ HTTP が付属しています

PHP を使用して簡単な SEO 最適化機能を開発する方法 SEO (SearchEngineOptimization)、または検索エンジン最適化とは、Web サイトの構造とコンテンツを改善することで検索エンジンでの Web サイトのランキングを向上させ、それによってより多くのオーガニック トラフィックを獲得することを指します。 Web サイト開発において、PHP を使用して簡単な SEO 最適化機能を実装するにはどうすればよいでしょうか?この記事では、開発者が PHP プロジェクトに SEO 最適化を実装するのに役立つ、一般的に使用される SEO 最適化テクニックと具体的なコード例をいくつか紹介します。 1. 使いやすい

C# を使用して最小スパニング ツリー アルゴリズムを作成する方法. 最小スパニング ツリー アルゴリズムは、グラフの接続性の問題を解決するために使用される重要なグラフ理論アルゴリズムです。コンピューター サイエンスでは、最小スパニング ツリーとは、スパニング ツリーのすべてのエッジの重みの合計が最小となる、接続されたグラフのスパニング ツリーを指します。この記事では、C# を使用して最小限のスパニング ツリー アルゴリズムを作成する方法を紹介し、具体的なコード例を示します。まず、問題を表すグラフ データ構造を定義する必要があります。 C# では、隣接行列を使用してグラフを表現できます。隣接行列は、各要素が表す 2 次元配列です。

インターネットの普及に伴い、写真や動画などの外部リンク機能を提供するWebサイトが増えています。しかし、この外部リンク機能は盗まれやすいのです。ホットリンクとは、他の Web サイトがあなたの Web サイト上の写真、ビデオ、その他のリソースを使用し、それらのリソースを独自のサーバーにダウンロードするのではなく、参照アドレスを通じて自分の Web サイトに直接表示することを意味します。このようにして、ホットリンク Web サイトは Web サイトのトラフィックと帯域幅のリソースを無料で使用できるため、リソースが無駄になり、Web サイトの速度に影響を与えます。この問題に対処するには、Nginx を使用してホットリンクを防ぐことができます。 Nginxは

ワンクリック ソリューション: pip ミラー ソースの使用スキルをすばやくマスターします はじめに: pip は、Python で最も一般的に使用されるパッケージ管理ツールであり、Python パッケージのインストール、アップグレード、管理を簡単に行うことができます。ただし、よく知られている理由により、デフォルトのミラー ソースを使用してインストール パッケージをダウンロードすると時間がかかるため、この問題を解決するには、国内のミラー ソースを使用する必要があります。この記事では、pip ミラー ソースの使用スキルをすぐにマスターする方法と、具体的なコード例を紹介します。始める前に、pip ミラー ソースの概念を理解してください。

C++ で分割統治アルゴリズムを使用する方法 分割統治アルゴリズムは、問題をいくつかのサブ問題に分解し、サブ問題の解を組み合わせて元の問題の解を得る方法です。応用範囲が広く、数学問題、並べ替え問題、グラフ問題など、さまざまな種類の問題の解決に使用できます。この記事では、C++ で分割統治アルゴリズムを使用する方法を紹介し、具体的なコード例を示します。 1. 基本的な考え方 分割統治アルゴリズムの基本的な考え方は、大きな問題をいくつかの小さなサブ問題に分解し、各サブ問題を再帰的に解決し、最後にサブ問題をマージすることです。

conda 仮想環境の利点と使用テクニックを理解するには、具体的なコード例が必要です Python は、科学計算、データ分析、人工知能などの分野で広く使用されている非常に人気のあるプログラミング言語です。 Python エコシステムには、多数のサードパーティ ライブラリとツールがあり、プロジェクトごとに異なるバージョンのライブラリを使用する必要がある場合があります。これらのライブラリの依存関係を管理するには、conda 仮想環境が重要なツールになります。 conda は、簡単に作成および実行できるオープンソースのパッケージ管理システムおよび環境管理システムです。
