我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java MapReduce编程方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java MapReduce编程方法是什么

这篇文章主要讲解了“Java MapReduce编程方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java MapReduce编程方法是什么”吧!

实验题目:

MapReduce:编程

实验内容:

本实验利用 Hadoop 提供的 Java API 进行编程进行 MapReduce 编程。

实验目标:

  • 掌握MapReduce编程。

  • 理解MapReduce原理

【实验作业】简单流量统计

有如下这样的日志文件:

13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 2481 24681 200
13726230513 00-FD-07-A4-72-B8:CMCC 120.196.40.8 i02.c.aliimg.com 248 0 200
13826230523 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 2481 24681 200
13726230533 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 2481 24681 200
13726230543 00-FD-07-A4-72-B8:CMCC 120.196.100.82 Video website 1527 2106 200
13926230553 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 2481 24681 200
13826230563 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 2481 24681 200
13926230573 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 2481 24681 200
18912688533 00-FD-07-A4-72-B8:CMCC 220.196.100.82 Integrated portal 1938 2910 200
18912688533 00-FD-07-A4-72-B8:CMCC 220.196.100.82 i02.c.aliimg.com 3333 21321 200
13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 Search Engines 9531 9531 200
13826230523 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 2481 24681 200
13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 2481 24681 200

该日志文件记录了每个手机用户在一段时间内的网络流量信息,具体字段含义为:

手机号码 MAC地址 IP地址 域名 上行流量(字节数) 下行流量(字节数) 套餐类型
根据以上日志,统计出每个手机用户在该时间段内的总流量(上行流量+下行流量),统计结果的格式为:

手机号码 字节数量

实验结果:

Java MapReduce编程方法是什么

实验代码:

WcMap.java

import java.io.IOException;import org.apache.commons.lang.StringUtils;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;        public class WcMap extends Mapper<LongWritable, Text, Text, LongWritable>{        @Override        protected void map(LongWritable key, Text value, Context context)            throws IOException, InterruptedException {                    String str = value.toString();                    String[] words = StringUtils.split(str," ",10);                    int i=0;                    for(String word : words){                        if(i==words.length-2||i==words.length-3)                        context.write(new Text(words[0]), new LongWritable(Integer.parseInt(word)));                        i++;                    }            }        }

WcReduce.java

import java.io.IOException;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;public class WcReduce extends Reducer<Text, LongWritable, Text, LongWritable>{    @Override    protected void reduce(Text key, Iterable<LongWritable> values,Context context)            throws IOException, InterruptedException {        long count = 0;        for(LongWritable value : values){            count += value.get();        }        context.write(key, new LongWritable(count));    }}

WcRunner.java

import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.util.Scanner;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FileSystem;import java.net.URI;public class WcRunner{    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {        Configuration conf = new Configuration();        Job job = Job.getInstance(conf);                job.setJarByClass(WcRunner.class);                job.setMapperClass(WcMap.class);        job.setReducerClass(WcReduce.class);                job.setOutputKeyClass(Text.class);        job.setOutputValueClass(LongWritable.class);                job.setMapOutputKeyClass(Text.class);        job.setMapOutputValueClass(LongWritable.class);        Scanner sc = new Scanner(System.in);        System.out.print("inputPath:");        String inputPath = sc.next();        System.out.print("outputPath:");        String outputPath = sc.next();        try {            FileSystem fs0 = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());            Path hdfsPath = new Path(outputPath);            fs0.copyFromLocalFile(new Path("/headless/Desktop/workspace/mapreduce/WordCount/data/1.txt"),new Path("/mapreduce/WordCount/input/1.txt"));            if(fs0.delete(hdfsPath,true)){                System.out.println("Directory "+ outputPath +" has been deleted successfully!");            }        }catch(Exception e) {            e.printStackTrace();        }        FileInputFormat.setInputPaths(job, new Path("hdfs://master:9000"+inputPath));        FileOutputFormat.setOutputPath(job, new Path("hdfs://master:9000"+outputPath));        job.waitForCompletion(true);        try {            FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());            Path class="lazy" data-srcPath = new Path(outputPath+"/part-r-00000");            FSDataInputStream is = fs.open(class="lazy" data-srcPath);            System.out.println("Results:");            while(true) {                String line = is.readLine();                if(line == null) {                    break;                }                System.out.println(line);            }            is.close();        }catch(Exception e) {            e.printStackTrace();        }    }}

【实验作业】索引倒排输出行号

在索引倒排实验中,我们可以得到每个单词分布在哪些文件中,以及在每个文件中出现的次数,修改以上实现,在输出的倒排索引结果中可以得到每个单词在每个文件中的具体行号信息。输出结果的格式如下:
单词 文件名:行号,文件名:行号,文件名:行号

实验结果:

MapReduce在3.txt的第一行出现了两次所以有两个1

Java MapReduce编程方法是什么

import java.io.*;import java.util.StringTokenizer;import org.apache.hadoop.io.*;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.lib.input.FileSplit;public class MyMapper extends Mapper<Object,Text,Text,Text>{    private Text keyInfo = new Text();    private Text valueInfo = new Text();    private FileSplit split;    int num=0;    public void map(Object key,Text value,Context context)            throws IOException,InterruptedException{        num++;        split = (FileSplit)context.getInputSplit();        StringTokenizer itr = new StringTokenizer(value.toString());        while(itr.hasMoreTokens()){            keyInfo.set(itr.nextToken()+" "+split.getPath().getName().toString());            valueInfo.set(num+"");            context.write(keyInfo,valueInfo);        }    }}
import java.io.*;import org.apache.hadoop.io.*;import org.apache.hadoop.mapreduce.Reducer;public class MyCombiner extends Reducer<Text,Text,Text,Text>{    private Text info = new Text();    public void reduce(Text key,Iterable<Text>values,Context context)            throws IOException, InterruptedException{        String  sum = "";        for(Text value:values){            sum += value.toString()+" ";        }                String record = key.toString();        String[] str = record.split(" ");        key.set(str[0]);        info.set(str[1]+":"+sum);        context.write(key,info);    }}
import java.io.IOException;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;public class MyReducer extends Reducer<Text,Text,Text,Text>{    private Text result = new Text();    public void reduce(Text key,Iterable<Text>values,Context context) throws            IOException, InterruptedException{        String value =new String();        for(Text value1:values){            value += value1.toString()+" ; ";        }        result.set(value);        context.write(key,result);    }}
import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.util.Scanner;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FileSystem;import java.net.URI;public class MyRunner {    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {        Configuration conf = new Configuration();        Job job = Job.getInstance(conf);        job.setJarByClass(MyRunner.class);        job.setMapperClass(MyMapper.class);        job.setReducerClass(MyReducer.class);        job.setCombinerClass(MyCombiner.class);        job.setOutputKeyClass(Text.class);        job.setOutputValueClass(Text.class);        job.setMapOutputKeyClass(Text.class);        job.setMapOutputValueClass(Text.class);        Scanner sc = new Scanner(System.in);        System.out.print("inputPath:");        String inputPath = sc.next();        System.out.print("outputPath:");        String outputPath = sc.next();        try {            FileSystem fs0 = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());            Path hdfsPath = new Path(outputPath);            if(fs0.delete(hdfsPath,true)){                System.out.println("Directory "+ outputPath +" has been deleted successfully!");            }        }catch(Exception e) {            e.printStackTrace();        }        FileInputFormat.setInputPaths(job, new Path("hdfs://master:9000"+inputPath));        FileOutputFormat.setOutputPath(job, new Path("hdfs://master:9000"+outputPath));        job.waitForCompletion(true);        try {            FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());            Path class="lazy" data-srcPath = new Path(outputPath+"/part-r-00000");            FSDataInputStream is = fs.open(class="lazy" data-srcPath);            System.out.println("Results:");            while(true) {                String line = is.readLine();                if(line == null) {                    break;                }                System.out.println(line);            }            is.close();        }catch(Exception e) {            e.printStackTrace();        }    }}

感谢各位的阅读,以上就是“Java MapReduce编程方法是什么”的内容了,经过本文的学习后,相信大家对Java MapReduce编程方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java MapReduce编程方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java MapReduce编程方法是什么

这篇文章主要讲解了“Java MapReduce编程方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java MapReduce编程方法是什么”吧!实验题目:MapReduce:编程
2023-06-22

java实现mapreduce的方法是什么

Java实现MapReduce的方法是使用Hadoop框架。Hadoop是一个开源的分布式计算框架,其中包含了MapReduce编程模型。在Java中实现MapReduce,主要步骤如下:1. 编写Mapper类:实现Map函数,将输入数据
2023-08-26

Java界面编程方法是什么

这篇文章主要介绍“Java界面编程方法是什么”,在日常操作中,相信很多人在Java界面编程方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java界面编程方法是什么”的疑惑有所帮助!接下来,请跟着小编
2023-06-03

Java并发编程学习方法是什么

这篇文章主要讲解了“Java并发编程学习方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java并发编程学习方法是什么”吧!一:并发基础和多线程首先需要学习的就是并发的基础知识,什么
2023-06-02

idea编写java程序的方法是什么

编写Java程序的方法是以下几个步骤:1. 确定程序需求和目标:确定程序要实现的功能和目标。2. 设计程序结构:根据需求和目标,设计程序的整体结构,包括类、方法、接口等的定义。3. 编写代码:根据程序结构,一步一步地编写代码实现各个功能模块
2023-08-11

Java与XML联合编程的方法是什么

本篇内容主要讲解“Java与XML联合编程的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java与XML联合编程的方法是什么”吧!DOM初步 DOM是Document Object
2023-06-03

Java编写HelloWorld的方法是什么

这篇文章主要介绍了Java编写HelloWorld的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java编写HelloWorld的方法是什么文章都会有所收获,下面我们一起来看看吧。1.Java开发中
2023-06-03

ubuntu编译java的方法是什么

本篇内容介绍了“ubuntu编译java的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.安装jdk并配置好相应环境变量。2.假
2023-07-04

Linux DMA编程方法是什么

本篇内容介绍了“Linux DMA编程方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!DMA即Direct Memory Acces
2023-06-16

java在线编译的方法是什么

在Java中,可以使用命令行工具javac来编译Java源代码文件。首先需要确保已经安装了JDK(Java Development Kit),然后在命令行中输入以下命令来编译Java源代码文件:javac YourJavaFile.jav
java在线编译的方法是什么
2024-03-02

Flutter React编程的方法是什么

这篇文章主要介绍“Flutter React编程的方法是什么”,在日常操作中,相信很多人在Flutter React编程的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Flutter React编程
2023-06-04

Java Socket编程中对于run的使用方法是什么

Java Socket编程中对于run的使用方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java Socket编程在使用的时候有很多语句需要我们注意,其中run
2023-06-17

Java8函数式编程方法是什么

这篇“Java8函数式编程方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java8函数式编程方法是什么”文章吧。什
2023-06-26

Scala编程的思考方法是什么

这篇文章主要讲解了“Scala编程的思考方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala编程的思考方法是什么”吧!在进行什么编程的时候,你用什么方法来思考呢?用命令是方法来
2023-06-17

C++ socket网络编程方法是什么

本篇内容主要讲解“C++ socket网络编程方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++ socket网络编程方法是什么”吧!功能完成Cpp客户端简单功能,可收发数据。源码#
2023-06-25

Java编程规则是什么

这篇文章主要讲解了“Java编程规则是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java编程规则是什么”吧!(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于
2023-06-03

什么是Java并发编程

本篇内容主要讲解“什么是Java并发编程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是Java并发编程”吧!Java多线程概述在Java中使用多线程是提高程序并发响应能力的重要手段,但同时
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录