[mapreduce_1]运行wordcount示例程序(代码片段)

share23 share23     2023-01-15     450

关键词:


 

0. 说明

  MapReduce 实现 Word Count 示意图 && Word Count 代码编写

 

 

 


 1. MapReduce 实现 Word Count 示意图

  技术分享图片

 

  1. Map:预处理阶段,将原始数据映射成每个 K-V,发送给 reduce
  2. Shuffle:混洗(分类),将相同的 Key发送给同一个 reduce
  3. Reduce:聚合阶段,把相同的 Key 进行聚合然后进行输出

 


 

2. Word Count 代码编写 

  [2.1 WCMapper]

 

package hadoop.mr.wc;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * Mapper 程序
 */
public class WCMapper extends Mapper<LongWritable, Text, Text, IntWritable> 
    /**
     * map 函数,被调用过程是通过 while 循环每行调用一次
     */
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException 
        // 将 value 变为 String 格式
        String line = value.toString();
        // 将一行文本进行截串
        String[] arr = line.split(" ");

        for (String word : arr) 
            context.write(new Text(word), new IntWritable(1));
        

    

 

  [2.2 WCReducer]

package hadoop.mr.wc;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

/**
 * Reducer 类
 */
public class WCReducer extends Reducer<Text, IntWritable, Text, IntWritable> 
    /**
     * 通过迭代所有的 key 进行聚合
     */
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException 
        int sum = 0;

        for (IntWritable value : values) 
            sum += value.get();
        

        context.write(key,new IntWritable(sum));
    

 

  [2.3 WCApp]

package hadoop.mr.wc;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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;


/**
 * Word Count APP
 */
public class WCApp 
    public static void main(String[] args) throws Exception 
        // 初始化配置文件
        Configuration conf = new Configuration();

        // 仅在本地开发时使用
//        conf.set("fs.defaultFS", "file:///");

        // 通过配置文件初始化 job
        Job job = Job.getInstance(conf);

        // 设置 job 名称
        job.setJobName("Word Count");

        // job 入口函数类
        job.setJarByClass(WCApp.class);

        // 设置 mapper 类
        job.setMapperClass(WCMapper.class);

        // 设置 reducer 类
        job.setReducerClass(WCReducer.class);

        // 设置 map 的输出 K-V 类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);

        // 设置 reduce 的输出 K-V 类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        // 设置输入路径和输出路径
//        Path pin = new Path("E:/test/wc/1.txt");
//        Path pout = new Path("E:/test/wc/out");
        Path pin = new Path(args[0]);
        Path pout = new Path(args[1]);
        FileInputFormat.addInputPath(job, pin);
        FileOutputFormat.setOutputPath(job, pout);

        // 执行 job
        job.waitForCompletion(true);
    

 

 


 



mapreduce编程-----wordcount程序编写及运行

一、MapReduce概述1.核心思想MapReduce的核心思想是“分而治之”,就是把一个复杂的问题,按照一定的“分解”方式分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的结果,把各部分的结果组成... 查看详情

Pydoop mapreduce“AttributeError:模块'wordcount_minimal'没有属性'__main__'”

】Pydoopmapreduce“AttributeError:模块\\\'wordcount_minimal\\\'没有属性\\\'__main__\\\'”【英文标题】:Pydoopmapreduce"AttributeError:module\'wordcount_minimal\'hasnoattribute\'__main__\'"Pydoopmapreduce“AttributeError:模块\'wor 查看详情

mapreduce概述和wordcount程序

一、Mapreduce概述  Mapreduce是分布式程序编程框架,也是分布式计算框架,它简化了开发!  Mapreduce将用户编写的业务逻辑代码和自带默认组合整合成一个完整的分布式运算程序,并发的运行在hadoop集群上。 二、Mapreduce优... 查看详情

mapreduce计算框架

...yarn然后在集群中的任意一台服务器上执行,(比如运行wordcount):hadoopjarhadoop-mapreduce-example-2.4.1.jarwordcount/wordcount/data/wordcount/outMapReduce引入的问题1、分发程序,并启动分发的程序2、中间数据的缓存和调度3、任务监控及失败处... 查看详情

理解mapreduce计算构架

用Python编写WordCount程序任务程序WordCount输入一个包含大量单词的文本文件输出文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔编写map函数,reduce函数将其权限... 查看详情

mapreduce编程之实例分析:wordcount

1.WordCount程序任务  输入:一个包含大量单词的文本文件  输出:文件中没个单词及出现的次数(频数),并按照单词顺序排序每个单词和其频数占一行,单词和频数之间有间隔2.WordCount程序设计思路  WordCount可以使用MapReduce去... 查看详情

在mapreduce中运行wordcount以及字数统计中遇到的问题(代码片段)

...可能是没有开启hadoop,或者eclipse文件没有配置好运行WordCount.java,代码没有错误,运行报错问题&# 查看详情

如何运行自带wordcount-hadoop2

...文件等。1.先在HDFS创建几个数据目录:hadoopfs-mkdir-p/data/wordcounthadoopfs-mkdir-p/output/ 2.目录/data/wordcount用来存放Hadoop自带的WordCount例子的数据文件,运行这个MapReduce任务的结果输出到/output/wordcount目录中。首先新建文件inputWord:v... 查看详情

mapreduce(分布式计算)_01

...=========================================================4-MapReduce案例-wordcount-步骤分析  ======================================================================================================= 查看详情

理解mapreduce

1. 用Python编写WordCount程序并提交任务程序WordCount输入一个包含大量单词的文本文件输出文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔编写map函数,reduce... 查看详情

理解mapreduce

1. 用Python编写WordCount程序并提交任务程序WordCount输入一个包含大量单词的文本文件输出文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔编写map函数,reduce... 查看详情

理解mapreduce

1. 用Python编写WordCount程序并提交任务程序WordCount输入一个包含大量单词的文本文件输出文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔编写map函数,reduce... 查看详情

分享知识-快乐自己:运行(wordcount)案例(代码片段)

运行wordcount案例:一):大数据(hadoop)初始化环境搭建二):大数据(hadoop)环境搭建三):运行wordcount案例四):揭秘HDFS五):揭秘MapReduce六):揭秘HBase七):HBase编程-----------------------------------------------------------------Hadoo... 查看详情

mapreduce编程模型wordcount

1、worldcount类中主要有三部分publicclassWordcount{     publicstaticclassTokenizerMapperextendsMapper<Object,Text,Text,IntWritable>{       //mapper类     }     publicstaticclassIntSumReducerextends{        查看详情

mapreduce编程之实例分析:wordcount

1.WordCount程序任务  输入:一个包含大量单词的文本文件  输出:文件中没个单词及出现的次数(频数),并按照单词顺序排序每个单词和其频数占一行,单词和频数之间有间隔2.WordCount程序设计思路  WordCount可以使用MapReduce去... 查看详情

理解mapreduce计算构架

用Python编写WordCount程序任务程序WordCount输入一个包含大量单词的文本文件输出文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔1、编写map函数,reduce函数2、将... 查看详情

理解mapreduce计算构架

 用Python编写WordCount程序任务程序WordCount输入一个包含大量单词的文本文件输出文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔1.编写map函数,reduce函数&nbs... 查看详情

理解mapreduce(代码片段)

 1. 用Python编写WordCount程序并提交任务程序WordCount输入一个包含大量单词的文本文件输出文件中每个单词及其出现次数(频数),并按照单词字母顺序排序,每个单词和其频数占一行,单词和频数之间有间隔编写map函数,r... 查看详情