大数据之 MapReduce 相关的 Java API 应用

这篇具有很好参考价值的文章主要介绍了大数据之 MapReduce 相关的 Java API 应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注意:本文基于前两篇教程

Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤

YARN 集群和 MapReduce 原理及应用

MapReduce 是 Apache Hadoop 项目中的一种编程模型,用于大规模数据集的并行处理。在 Hadoop 中,MapReduce 使用 Java API 来编写 Map 和 Reduce 函数。

API 简介

以下是 MapReduce 相关的核心 Java API 类和接口的概览::

  1. Mapper:

    • org.apache.hadoop.mapreduce.Mapper: 定义了映射阶段的接口,程序员需要实现这个接口来处理输入数据并生成中间键值对。
    public class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
         
        // 实现map方法
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
         
            // ... 处理逻辑 ...
        }
    }
    

    2.Reducer:

    • org.apache.hadoop.mapreduce.Reducer: 定义了归约阶段的接口,程序员需要实现这个接口来聚合Mapper产生的中间键值对。
        public class MyReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
         
           // 实现reduce方法
           protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
         
               // ... 聚合逻辑 ...
           }
       }  
    
  2. Job:

    • org.apache.hadoop.mapreduce.Job: 代表一个MapReduce作业,用来设置作业的各种属性,包括输入输出路径、mapper和reducer类、job配置等,并提交作业到集群运行。
    Job job = Job.getInstance(conf, "my-job");
    job.setJarByClass(MyJob.class);
    job.setMapperClass(MyMapper.class);
    job.setReducerClass(MyReducer.class);
    FileInputFormat.addInputPath(job, new Path(inputPath));
    FileOutputFormat.setOutputPath(job, new Path(outputPath));
    job.waitForCompletion(true);
    
  3. InputFormat:

  • org.apache.hadoop.mapreduce.lib.input.TextInputFormat 等,定义了如何从输入源读取数据并切分成键值对供给Mapper。
  1. OutputFormat:
  • org.apache.hadoop.mapreduce.lib.output.TextOutputFormat 等,定义了如何将Reducer的输出写入到HDFS或其他存储系统中。
  1. Writable:
  • Hadoop中用于序列化和反序列化的基类,例如 LongWritable, Text, IntWritable 等,用于在MapReduce过程中传输和持久化数据。
  1. Configuration:
  • org.apache.hadoop.conf.Configuration 类用于保存和加载作业的配置参数。
  1. Context:
  • 在Mapper和Reducer中可用的对象,提供与上下文交互的能力,如写入键值对、报告进度和状态等。
  1. RecordReaderRecordWriter:

    • 分别负责读取输入文件数据并转换为键值对(由InputFormat提供),以及将Reducer的输出写出到目标文件(由OutputFormat提供)。

通过以上这些API组件,开发者可以构建出复杂的批处理任务,利用Hadoop分布式计算能力处理海量数据。

API 应用开发

MapReduce 应用开发步骤:

  1. 创建 Mapper 类
  2. 创建 Reducer 类
  3. 设置和提交 Job

下面我们以单词数量统计为例,来学习 MapReduce 应用开发的步骤。

这里我们分两种方式来执行作业:

  • windows 本地执行:不需要打 jar 包
  • linux 集群环境执行:需要打 jar 包,提交到集群服务器上通过命令调用执行
windows 本地执行
1. 创建 Mapper 类

Mapper 类是用来处理输入数据并生成中间键值对的文章来源地址https://www.toymoban.com/news/detail-853851.html

package com.demo2;

import java.io.IOException;

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

/**
 * 分片和映射
 * 按行分片
 */
public class WordCounterMapper extends Mapper<LongWritable, Text, Text, LongWritable>{
   
    /**
     * 每个分片都会调用一次 map() 方法
     * @param key
     * @param value
     * @param context
     * @throws IOException
     * @throws InterruptedException
     */
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, LongWritable>.Context context)
          throws IOException, InterruptedException {
   
       //按行切片出来的字符串
       String values = value.toString();
       System.out.println("::"+values);

       //按空白字符分割 提取单词
       String[] wArr = values.split("\\s+");

       //每个单词做
       for (

到了这里,关于大数据之 MapReduce 相关的 Java API 应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据技术原理与应用实验指南——HDFS JAVA API编程实践

    1. 实验目的 (1) 熟练使用HDFS操作常用的Shell命令。 (2) 熟悉HDFS操作常用的Java API。 2. 实验内容 (1) 编程实现指定功能,并利用Hadoop提供的Shell命令完成相同任务(文件的上传、下载、输出、删除、移动等操作)。 (2) 有余力编写一个Java程序,读取HDFS中的指定文件。

    2024年02月19日
    浏览(31)
  • 第1关:MapReduce综合应用案例 — 电信数据清洗

    根据提示,在右侧编辑器补充代码,对数据按照一定规则进行清洗。 数据说明如下: a.txt 数据切分方式: , 数据所在位置: /user/test/input/a.txt 15733218050,15778423030,1542457633,1542457678,450000,530000 15733218050 15778423030 1542457633 1542457678 450000 530000 呼叫者手机号 接受者手机号 开始时间戳(

    2024年02月03日
    浏览(29)
  • 第1关:数据清洗MapReduce综合应用案例 — 招聘数据清洗

    根据提示,在右侧编辑器补充代码,对数据按照一定规则进行清洗。 数据说明如下: data.json ; 数据所在位置: /root/data/data.json ; id company_name eduLevel_name emplType jobName salary createDate endDate city_code companySize welfare responsibility place workingExp id编号 公司名称 学历要求 工作类型 工作

    2024年02月06日
    浏览(29)
  • Java中File类相关API的综合练习

    不爱生姜不吃醋⭐️⭐️⭐️ 声明: 🌻看完之后觉得不错的话麻烦动动小手点个赞赞吧👍 🌻如果本文有什么错误的话欢迎在评论区中指正哦💗 🌻与其明天开始,不如现在行动!💪 🌻大家的支持就是我最大的动力!冲啊!🌹🌹🌹 本文章是关于Java中File类相关API的综合

    2024年02月11日
    浏览(26)
  • 大数据技术原理与应用实验4——MapReduce初级编程实践

    链接: 大数据技术原理与应用实验1——熟悉常用的HDFS操作 链接: 大数据技术原理与应用实验2——熟悉常用的Hbase操作 链接: 大数据技术原理与应用实验3——NoSQL和关系数据库的操作比较 (1)通过实验掌握基本的MapReduce编程方法; (2)掌握用MapReduce解决一些常见的数据处理

    2024年02月06日
    浏览(40)
  • 头歌大数据——MapReduce综合应用案例 — 电信数据清洗 答案 无解析

    第1关:数据清洗 编程要求 根据提示,在右侧编辑器补充代码,对数据按照一定规则进行清洗。 Tips:本关需要补充三个文件的代码~如下图所示,点击小三角切换文件~   记得启动HDFS~~ 代码如下: 

    2024年02月04日
    浏览(36)
  • 大数据技术原理及应用课实验5 :MapReduce初级编程实践

    目录 一、实验目的 二、实验平台 三、实验步骤(每个步骤下均需有运行截图) (一)编程实现文件合并和去重操作 (二)编写程序实现对输入文件的排序 (三)对给定的表格进行信息挖掘 四、实验总结 五、优化及改进(选做) 实验5  MapReduce初级编程实践 1. 通过实验掌

    2024年01月21日
    浏览(37)
  • 大数据处理领域的经典框架:MapReduce详解与应用【上进小菜猪大数据】

    上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货。 MapReduce是一个经典的大数据处理框架,可以帮助我们高效地处理庞大的数据集。本文将介绍MapReduce的基本原理和实现方法,并给出一个简单的示例。 MapReduce的基本原理包括两个阶段:Map和Reduce。 1、Map阶段 M

    2024年02月07日
    浏览(38)
  • 云计算中的大数据处理:尝试HDFS和MapReduce的应用

    在实验开始之前我们需要在虚拟机里面启动HDFS,进入到Hadoop安装目录里面的sbin目录里面执行 start-all.sh 命令即可启动成功,然后使用 jps 查看全部节点是否已经启动了,在昨天的做题的时候我在最开始上传文件到hdfs 的时候报错: could only be written to 0 of the 1 minReplication nodes,

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包