基於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);//map的class
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