1. 程式人生 > >Hadoop計算平均值【轉】

Hadoop計算平均值【轉】

package org.apache.hadoop.examples;

import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.DoubleWritable;
//import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; //import org.apache.hadoop.util.GenericOptionsParser;
public class Average { public static class AverageMaper extends Mapper<Object,Text,Text,Text> { //private final static IntWritable one=new IntWritable(1); private static Text word=new Text(); public void map(Object key,Text value,Context context) throws
IOException,InterruptedException { StringTokenizer itr=new StringTokenizer(value.toString()); while(itr.hasMoreTokens()) { word.set(itr.nextToken()); if(itr.hasMoreTokens()) context.write(word, new Text(itr.nextToken()+",1")); } } } public static class AveragerCombine extends Reducer<Text,Text,Text,Text> { public void reduce(Text key,Iterable<Text> values,Context context) throws IOException,InterruptedException { int sum=0; int cnt=0; for(Text val:values) { String []str=val.toString().split(","); sum+=Integer.parseInt(str[0]); cnt+=Integer.parseInt(str[1]); } context.write(key,new Text(sum+","+cnt)); } } public static class AveragerReduce extends Reducer<Text,Text,Text,DoubleWritable> { public void reduce(Text key,Iterable<Text> values,Context context) throws IOException,InterruptedException { int sum=0; int cnt=0; for(Text val:values) { String []str=val.toString().split(","); sum+=Integer.parseInt(str[0]); cnt+=Integer.parseInt(str[1]); } double res=(sum*1.0)/cnt; context.write(key, new DoubleWritable(res)); } } public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub Configuration conf=new Configuration(); String []myargs=args; if(myargs.length!=2) { System.err.println("please input two args<in> <out>\n"); System.exit(2); } Job job=new Job(conf,"average job"); job.setJarByClass(Average.class); job.setMapperClass(AverageMaper.class); job.setCombinerClass(AveragerCombine.class); job.setReducerClass(AveragerReduce.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); FileInputFormat.addInputPath(job, new Path(myargs[0])); FileOutputFormat.setOutputPath(job,new Path(myargs[1])); System.exit(job.waitForCompletion(true)?0:1); } }

相關推薦

Hadoop計算平均值

package org.apache.hadoop.examples; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; impo

根據兩點經緯度計算距離

起點 hot 會議 gid 理論 轉換方法 radius math 技術 根據兩點經緯度計算距離【轉】 一 經緯度 1 簡介 這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉(地軸是一根通過地球南北兩極和地球中心的假想線),在地球中腰畫一個與地軸垂直的大圓

三維空間兩直線/線段最短距離、線段計算算法

發布 2.3 main position overflow 解析 get fix 三維 https://segmentfault.com/a/1190000006111226 d(ls,lt)=|sj−tj|=|s0−t0+(be

C#計算兩坐標點距離

誤差 param 返回 ear 半徑 tdi col ng2 地球 //地球半徑,單位米 private const double EARTH_RADIUS = 6378137; /// <summary>

ROC和AUC介紹以及如何計算AUC

image 第一個 true 編寫代碼 提前 好的 詳細說明 receiver 展示 轉自:http://alexkong.net/2013/06/introduction-to-auc-and-roc/ ROC(Receiver Operating Character

如何理解雲計算?很簡單,就像吃貨想吃披薩了

公司 如果 pan 雲技術 cit 分類 本地應用 style 分發 你一定聽說過雲計算中的三個“高大上”的概念:IaaS、PaaS和SaaS。這幾個術語並不好理解。不過,如果你是個吃貨,還喜歡披薩,這個問題就好解決了!好吧,其實你根本不是一個吃貨,之所以自我標榜為

Java計算文件的hash值

rtu keyword article get sha-1 ron tro 就是 windows 原文地址:http://blog.csdn.net/qq_25646191/article/details/78863110 如何知道一個文件是否改變了呢?當然是用比較文件ha

dB的計算方法

方便 濾波 order 意義 級聯 儀表 宋體 信噪比 car 原文地址:https://www.espressif.com/zh-hans/media/blog/%E5%A2%9E%E7%9B%8A%E6%AF%94%E5%80%BC-db-%E4%BB%A5%E5%8F

雲端計算,大資料,人工智慧三者有何關係?

轉自:【http://cloud.idcquan.com/yjs/115806.shtml】原文:來源:今日頭條/領先網路 2017-05-02 17:17 雲端計算,大資料,和人工智慧,最近火的不行不行的詞彙,似乎不相同,但又似乎相互關聯,到底是什麼樣的關係呢?其實他們本沒有什麼關係,各自活在不

計算,大數據,人工智能三者有何關系?

能力 基於 永遠 箱子 理解 idc linux nts 相同 轉自:【http://cloud.idcquan.com/yjs/115806.shtml】原文:來源:今日頭條/領先網絡 2017-05-02 17:17 雲計算,大數據,和人工智能,最近火的不行不行的詞匯,

Hadoop學習--第二篇:史上最詳細的Hadoop環境搭建

GitChat 作者:鳴宇淳 原文: 史上最詳細的Hadoop環境搭建 前言 Hadoop在大資料技術體系中的地位至關重要,Hadoop是大資料技術的基礎,對Hadoop基礎知識的掌握的紮實程度,會決定在大資料技術道路上走多遠。 這是一篇入門文章,Hadoop的學

Hadoop的應用場景

  Hadoop通常被認定是能夠幫助你解決所有問題的唯一方案。 當人們提到“大資料”或是“資料分析”等相關問題的時候,會聽到脫口而出的回答:Hadoop!  實際上Hadoop被設計和建造出來,是用來解決一系列特定問題的。對某些問題來說,Hadoop至多算是一個不好的選擇,對

棧在表示式計算過程中的應用

棧在表示式計算過程中的應用 :建立運算元棧和運算子棧。運算子有優先順序。 規則:  自左至右掃描表示式,凡是遇到運算元一律進運算元棧。  當遇到運算子時,如果它的優先順序比運算子棧棧頂元素的優先順序高就進棧。反之,取出棧頂運算子和運算元棧棧頂的連續兩個運算元進行運算

centos安裝配置hadoop超詳細過程

轉自:http://www.centoscn.com/image-text/install/2014/1121/4158.html 1、叢集部署介紹 1.1 Hadoop簡介           Hadoop是Apache軟體基金會旗下的一個開源分散式計算平臺。以Hadoop分散式檔案系統

Hadoop叢集datanode磁碟不均衡的解決方案

一、引言: Hadoop的HDFS叢集非常容易出現機器與機器之間磁碟利用率不平衡的情況,比如叢集中新增新的資料節點,節點與節點之間磁碟大小不一樣等等。當hdfs出現不平衡狀況的時候,將引發很多問題,比如MR程式無法很好地利用本地計算的優勢,機器之間無法達到更好的網路頻寬使用率,機器磁碟無法利用等等。 二、問題

計算Java List中的重複項出現次數

本文演示如何使用Collections.frequency和Map來計算重複項出現的次數。(Collections.frequency在JDK 1.5版本以後支援) package com.qiyadeng.core; import java.util.ArrayLis

使用Docker搭建hadoop叢集

剛開始搭建Hadoop叢集的時候,使用的是VMware建立的虛擬機器。結果卡到心態爆炸。。。 今天嘗試使用Docker搭建hadoop叢集,發現是如此的好用快捷,也比使用VMware簡單。 在這裡記錄一下防止以後忘記,為以後的學習做準備。 1.獲取映象。 如果是本地使用VMware搭建的話,需

基於Hadoop的資料倉庫Hive 基礎知識

基於Hadoop的資料倉庫Hive 基礎知識 - miao君的文章 - 知乎 https://zhuanlan.zhihu.com/p/25608332 Hive是基於Hadoop的資料倉庫工具,可對儲存在HDFS上的檔案中的資料集進行資料整理、特殊查詢和分析處理,提供了類

用通俗易懂的話說下hadoop是什麼,能做什麼

轉自http://blog.csdn.net/houbin0912/article/details/72967178hadoop是什麼?(1)Hadoop是一個開源的框架,可編寫和執行分散式應用處理大規模資料,是專為離線和大規模資料分析而設計的,並不適合那種對幾個記錄隨機讀寫

python編程(python開發的三種運行模式)

阻塞 data tail 驗證 目錄 pro 什麽 read bus 轉自:http://blog.csdn.net/feixiaoxing/article/details/53980886 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 目錄(?)[-]