1. 程式人生 > >基於mapreduce的兩個簡單例子

基於mapreduce的兩個簡單例子

Mapreudce開發:

(對路由資料進行過濾,只保留想要的幾項。只有map沒有reduce

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.conf.Configured;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.NullWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.*;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

import org.apache.hadoop.util.Tool;

import org.apache.hadoop.util.ToolRunner;

public  class Map extends Configured implements Tool {

public static class Map1 extends Mapper<LongWritable,Text,NullWritable,Text>{

 enum Couter{

 LINESKIP,//計數器

 }

public void map(LongWritable key,Text value,Context context)throws IOException,InterruptedException{

String line=value.toString();//讀取源資料

try{

String [] linespilt=line.split(" ");

String m=linespilt[0];

String t=linespilt[1];

String mac=linespilt[4];

String str=m+" "+t+" "+" "+mac;

Text tout=new Text(str);

context.write(NullWritable.get(), tout); //key \t value

}catch(java.lang.ArrayIndexOutOfBoundsException e)

{

          context.getCounter(Couter.LINESKIP).increment(1);//出錯行加1

                return;

}

}

}

public int run(String[] args)throws Exception{

Configuration conf=getConf();

Job job=new Job(conf,"lala");//作業名

FileInputFormat.addInputPath(job,new Path("hdfs://192.168.146.130:9000/user/hadoop/input/mptrys"));

FileOutputFormat.setOutputPath(job,new Path("hdfs://192.168.146.130:9000/mptryd"));

job.setMapperClass(Map1.class);//mapclass

job.setOutputFormatClass(TextOutputFormat.class);

job.setOutputKeyClass(NullWritable.class);//指定輸出key

job.setOutputValueClass(Text.class);//指定輸出的Value

job.waitForCompletion(true);

return job.isSuccessful()?1:0;

}

public static void main(String args[])throws Exception{

int res=ToolRunner.run(new Configuration(),new Map(), args);

System.exit(res);

}

}

倒排:

package trymr2;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.conf.Configured;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.NullWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.*;

import org.apache.hadoop.mapreduce.Mapper.Context;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

import org.apache.hadoop.util.Tool;

import org.apache.hadoop.util.ToolRunner;

public class test2 extends Configured implements Tool {

public static class Map1 extends Mapper<LongWritable,Text,Text,Text>{

 enum Couter{

 LINESKIP,

 }

 public void map(LongWritable key,Text value,Context context)throws IOException,InterruptedException{

 String line=value.toString();

  try{

String [] linespilt=line.split(" ");

String calf=linespilt[0];

String calt=linespilt[1];

Text tcalf=new Text(calf);

Text tcalt=new Text(calt);

context.write(tcalt, tcalf);

}catch(java.lang.ArrayIndexOutOfBoundsException e)

{

                context.getCounter(Couter.LINESKIP).increment(1);

              return;

}

 }

}

public static class Reduce extends Reducer<Text,Text,Text,Text>{

 enum Couter{

  LINESKIP,

 }

 public void reduce(Text key,Iterable<Text> value,Context

context)throws IOException,InterruptedException{

 String val;

             String out="";

 for(Text vale:value){

 val=vale.toString();

 out+=val+"|";

 }

 //Text a=new Text(out);

  context.write(key, new Text(out));

 }

}

public int run(String[] args) throws Exception{

Configuration conf=getConf();

Job job=new Job(conf,"lala1");

FileInputFormat.addInputPath(job,new Path

("hdfs://192.168.146.130:9000/user/hadoop/input/lilanmr2"));

FileOutputFormat.setOutputPath

(job,new Path("hdfs://192.168.146.130:9000/mptryd12"));

job.setMapperClass(Map1.class);

job.setReducerClass(Reduce.class);

job.setOutputFormatClass(TextOutputFormat.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(Text.class);

job.waitForCompletion(true);

return job.isSuccessful()?1:0;

}

public static void main(String args[])throws Exception{

int res=ToolRunner.run(new Configuration(),new test2(), args);

System.exit(res);

}

}

相關推薦

基於mapreduce簡單例子

Mapreudce開發: (對路由資料進行過濾,只保留想要的幾項。只有map沒有reduce) import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apach

【轉載】Caffe學習:運行caffe自帶的簡單例子

0.00 練習 siam 其它 sudo 單例 復制 腳本 policy 原文:http://www.cnblogs.com/denny402/p/5075490.html 為了程序的簡潔,在caffe中是不帶練習數據的,因此需要自己去下載。但在caffe根目錄下的data

【9】Caffe學習系列:執行caffe自帶的簡單例子

為了程式的簡潔,在caffe中是不帶練習資料的,因此需要自己去下載。但在caffe根目錄下的data資料夾裡,作者已經為我們編寫好了下載資料的指令碼檔案,我們只需要聯網,執行這些指令碼檔案就行了。 注意:在caffe中執行所有程式,都必須在根目錄下進行,即/caffe,否則會出錯,因為指令碼檔案

執行caffe自帶的簡單例子

為了程式的簡潔,在caffe中是不帶練習資料的,因此需要自己去下載。但在caffe根目錄下的data資料夾裡,作者已經為我們編寫好了下載資料的指令碼檔案,我們只需要聯網,執行這些指令碼檔案就行了。 注意:在caffe中執行所有程式,都必須在根目錄下進行,否則會出錯 1

c++類編程的簡單例子

function pointer efi AI == TP 數據 IT empty 關於棧的數據結構:類的頭文件定義 // stack.h -- class definition for the stack /*****************

[編譯] 6、開源簡單且有用的安卓APP命令行開發工具和nRF51822命令行開發工具

android 關註 eabi ref 文件 不存在 alt stdin vim 星期四, 27. 九月 2018 12:00上午 - BEAUTIFULZZZZ 一、前言 前幾天給大家介紹了如何手動搭建安卓APP命令行開發環境和nRF51822命令行開發環境,中秋這

記錄簡單的桶排序和氣泡排序

桶排序 關於桶排序先做幾點說明: 1)桶排序是穩定的;  2)桶排序是常見排序演算法中最快的一種,大多數情況下比快排和歸併排序還要快  3)桶排序非常快但是也非常消耗空間,典型的以空間換時間,基本上是最耗記憶體的一種排序演算法。 桶排序中:無序陣列有

簡單方法快速解決怎麼把kux格式轉mp4

  我們喜歡在優酷上面觀看是視訊,這是休息時間裡不錯的選擇。但是你知道優酷視訊上下載的檔案,都是KUX檔案視訊,這可是在電腦播放器沒辦法播放的哦!所以即使彷彿這種下載的毫無意義,沒事,給大家推薦兩種能觀看KUX視訊的方法!一種是利用瀏覽器小外掛下載視訊,另一種則是使用迅捷視訊轉換器將kux格式轉換為MP4

Sql行轉列的例子

SQL行轉列 所謂行轉列就是將某一個category型別的列(nx1的矩陣,實質是有m類),目標是將多行轉換成為多列(新增m列)。 例1:模擬順豐SQL小例子 ##順豐面試題(SQLite編碼實現題目) import sqlite3 conn=sqlite3.con

多態的例子

getclass ava stat new 隱式 static return 應該 多態 class A { public String show(B obj){ return ("A and D"); } public String

【筆記】嵩天-Python語言程式設計-完成簡單例項

【根索引】 【Python索引】 目標 使用PyCharm,完成兩個小例項的編寫和執行。一個是溫度轉換,一個是蟒蛇圖形繪製。 過程 1、先設定project目錄,雖然命名不是很正式,主要不太習慣軟體的目錄結構,好在只是熟悉語言和工具,就先把程式碼都放一個目錄下吧。 2、可以開啟多個py檔案,執行時可

【筆記】嵩天-Python語言程序設計-完成簡單實例

字母 輸入 port temp 過程 family 設計 log 目錄 【根索引】 【Python索引】 目標 使用PyCharm,完成兩個小實例的編寫和運行。一個是溫度轉換,一個是蟒蛇圖形繪制。 過程 1、先設置project目錄,雖然命名不是很正式,主要不太習慣

[編譯] 6、開源簡單且有用的安卓APP命令列開發工具和nRF51822命令列開發工具

星期四, 27. 九月 2018 12:00上午 - BEAUTIFULZZZZ 一、前言 前幾天給大家介紹瞭如何手動搭建安卓APP命令列開發環境和nRF51822命令列開發環境,中秋這幾天我把上面篇文章的操作流程全部做成了shell指令碼,使得可以讓其他人簡單執行下指令碼、就能夠直接建立綠色開發環境,豈

函式指標的簡單用法

/************************************************************************* > File Name: func.cpp > Author: yangjx > Mail: [email pr

Hbase整合MapReduce注意的地方

一、通過javaAPI插入資料到HBase時,HBase裡scan出來的資料亂碼,如下程式碼: Put put = new Put(Bytes.toBytes(key.get())); 我這裡的key是Map階段的輸入key,格式為LongWritable,插入資料後,Hbase

給Python新人練手準備的簡單案例

最好的程式語言是什麼?一千個程式設計師或許會有一千零一種答案: PHP自然是不會錯過這個噱頭、C/C++作為元老級的程式語言一直屹立不倒、Java依舊是市場上的香餑餑、當然還有JavaScript、C#、Ruby以及Objective-C……每一種程式語言,都有由其打造的頂

html5的幾簡單例子

(宣告:html5是較先進的技術,請在較新瀏覽器上測試,如ie9,firefox,chrome的較新版本) 1.audio元素 audio和video標籤可以直接在網頁上播放,不用任何外掛! 程式碼如

Schema的幾簡單例子 入門

"><xsd:element name="customer"><xsd:complexType><xsd:sequence><xsd:element name="name" type="xsd:string"/><xsd:element ref="a

【Boost】boost::algorithm的幾簡單例子

void test_foreach() { using namespace boost::assign; std::vector<int> v; v += 1, 2, 3, 4, 5, 6, 7, 8, 9; BOOST_FOREACH(int x,

C和指標第八章的簡單程式碼

第五題其實也寫了,但是不對所以不想貼了,矩陣運算實在使人頭疼 //計算稅收。以前覺得好像只能if實現,原來也可以這樣 #include <stdio.h> #include <stdlib.h> float stax( int mo