【Hadoop】MapReduce (五)

news2024/11/24 1:30:30

MapReduce

入门案例练习

  1. 统计文件中每一个单词出现的次数(文件:words.txt)
  2. 对IP去重(文件:ip.txt)

组件

序列化 - Writable

  1. 统计每一个人花费的上行流量、下行流量以及总流量(文件:flow.txt)

  2. 在MapReduce中,各个节点之间基本上都是通过RPC的方式来进行调用,也因此要求传输的数据必须被序列化

  3. Hadoop并没有使用Java的原生序列化机制,底层默认采用了AVRO来进行的序列化。在AVRO的基础上,MapReduce进行了封装,从而简化了序列化操作 - 让需要被序列化的对象对应的类实现接口Writable,覆盖其中的writereadFields方法即可

  4. 由于AVRO的限制,所以要求被序列化的类中必须有无参构造,同时不允许属性值为null

  5. MapReduce针对常用的类都提供了序列化形式

    Java类序列化类
    ByteByteWritable
    ShortShortWritable
    IntegerIntWritable
    LongLongWritable
    FloatFloatWritable
    DoubleDoubleWritable
    BooleanBooleanWritable
    StringText
    NullNullWritable
    ArrayArrayWritable
    MapMapWritable

分区 - Partitioner

  1. 按地区,统计每一个人花费的总流量(文件:flow.txt)
    在这里插入图片描述

  2. Partitioner(分区)的作用是对数据进行分类

  3. 默认情况下,MapReduce中,只有一个1个分区,所以也只有1个ReduceTask。如果进行了分类,那么就需要指定多个ReduceTask。每一个分区都需要对应一个ReduceTask,每一个ReduceTask都会产生一个结果文件 - 分区的数量决定了ReduceTask的数量,ReduceTask的数量决定了结果文件的数量

  4. 在MapReduce中,会对分区进行编号,编号是从0开始的

排序 - Comparable

  1. 在MapReduce中,无论逻辑是否需要,默认会对MapTask的输出的键进行排序,也因此要求放在Mapper输出的键对应的类必须实现Comparable接口。考虑到还要进行序列化,需要实现WritableComparable接口
  2. 如果需要指定自己的排序规则,那么需要定义类实现WritableComparable接口
  3. 案例:先按照月份升序排序,如果是同一个月,那么按照利润降序排序(文件:profit.txt)

合并 - Combiner

  1. Combiner是在不改变结果的前提下,减少ReduceTask的计算条数

    在这里插入图片描述

  2. 如果需要使用Combiner,只需要在入口类中添加

    job.setCombinerClass(XXXReducer.class);
    
  3. 可以传递结果的运算,可以使用Combiner,例如求和、求积、去重、取最值等;不能传递结果的运算,不能使用Combiner,例如求平均值等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1634316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【面试经典 150 | 图的广度优先搜索】最小基因变化

文章目录 写在前面Tag题目来源解题思路方法一:广搜 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾…

Java使用SpringBoot和EasyExcel 实现动态数据导出实战

Java使用SpringBoot和EasyExcel 实现动态数据导出实战 1、前言2、【资源地址】3、代码示例(demo)4、目前Java实现数据导出为Excel方式5、依赖6、总结 1、前言 工作中有用到将数据导出为Excel的场景,在此记录下。在日常开发中,Excel文件处理是一项常见的…

部署(Deployment)

Today you’ll be designing your own machine learning project, creating your own dataset, training a model using your data, and finally deploying an application on the web. We’ll be using a particular deployment target called Hugging Face Space with Gradio…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 4月30日,星期二

每天一分钟,知晓天下事! 2024年4月30日 星期二 农历三月廿二 1、 气象台:五一假日前期全国大部地区晴好为主,假日后期中东部地区需警惕大范围强降雨。 2、 交通运输部:5月1日0时至5日24时,收费公路小客车免…

通过AI助手实现一个nas定时任务更新阿里云域名解析

一.通过AI助手实现一个ip-domain.py的脚本 起一个Python脚本,ip-domain.py;注意已安装Python3.的运行环境;将下面阿里云相关配置添加,注意这里引用了两个包,requests和alibabacloud_alidns20150109;执行前…

【优质书籍推荐】Vue.js 3.x+Element Plus从入门到精通

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

袁庭新ES系列17节|Spring Data Elasticsearch基础

前言 为了简化对Elasticsearch的操作Spring Data提供了Spring Data Elasticsearch。Spring Data Elasticsearch是Spring Data技术对Elasticsearch原生API封装之后的产物,它通过对原生API的封装,使得程序员可以简单的对Elasticsearch进行各种操作。接下来…

华为 huawei 交换机 配置 MUX VLAN 示例(汇聚层设备)

组网需求 在企业网络中,企业所有员工都可以访问企业的服务器。但对于企业来说,希望企业内部部分员工之间可以互相交流,而部分员工之间是隔离的,不能够互相访问。 如 图 6-4 所示, Switch1 位于网络的汇聚层&#xff0…

STM32F103学习笔记 | 4.STM32F103芯片介绍

STM32F1入门学习将使用STM32F103C8T6开发板最小系统板。小R为什么选择它来入门呢?咳咳~首先,ST官方提供强大且易用的标准库函数,使得开发过程方便快捷;其次,网上的教程资料多也十分详细。所以呢,它对高校学…

SQLite的扩展函数Carray()表值函数(三十八)

返回:SQLite—系列文章目录 上一篇:SQLite如何处理CSV 虚拟表 下一篇:SQLite—系列文章目录 ​ 1. 概述 Carray()是一个具有单列的表值函数(名为 “value”)和零行或多行。 carray() 中每一行的“值”取自 C 语言数组 由应用程序通过参数绑定提…

【yolov8目标检测部署】TensorRT int8量化

原作者github:https://github.com/xuanandsix/Tensorrt-int8-quantization-pipline/tree/main 改进: 源代码支持的TensorRT版本为7.许多属性已经弃用; 在原有的代码上将支持的TensorRT版本从7改到8. !!不知道如何安装T…

工具链工具——映射与调度、模拟与验证、开发与测试工具

本篇文章将重点介绍工具链的工具相关知识,我们将从工具链的基本概念出发,重点介绍工具链中的映射和调度工具、模拟与验证工具、开发和测试工具,最后提出对工具链发展的展望,从而对工具链的工具进行一个较为系统的讲解。 工具链的…

万兴PDF专家 PDFelement Pro v10.3.8 破姐版!

🧑‍💻万兴PDF专家 PDFelement Pro v10.3.8 破姐版 (https://docs.qq.com/sheet/DRVVxTHJ3RXJFVHVr)

WebSocket 全面解析

🌟 引言 WebSocket,一个让实时通信变得轻而易举的神器,它打破了传统HTTP协议的限制,实现了浏览器与服务器间的全双工通信。想象一下,即时消息、在线游戏、实时股票报价…这一切都离不开WebSocket的魔力💫。…

利用word2vec包将中文转变为词向量

代码展示&#xff1a; import jieba import re import json import logging import sys import gensim.models as word2vec from gensim.models.word2vec import LineSentence, loggerpattern u[\\s\\d,.<>/?:;\\"[\\]{}()\\|~!\t"#$%^&*\\-_a-zA-Z&…

网页使用之如何返回json/xml

后端返回json数据给前端进行渲染的方式比较熟悉&#xff0c;至于返回html页面&#xff0c;返回xml的方式接触逐渐减少&#xff0c;来在项目中熟悉这一点。 返回文本数据 json姿势的返回实属最简单的方式&#xff0c;在SpringBoot应用中&#xff0c;有两种简单的方式 1.直接在…

【docker 】Windows10安装 Docker

安装 Hyper-V Hyper-V 是微软开发的虚拟机&#xff0c;仅适用于 Windows 10。 按键&#xff1a; win键X &#xff0c;选着程序和功能 在查找设置中输入&#xff1a;启用或关闭Windows功能 选中Hyper-V 点击确定 安装 Docker Desktop for Windows Docker Desktop 官方下载…

LeetCode46:全排列

题目描述 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案 解题思想 使用used记录元素是否使用过&#xff0c;排列是有序的&#xff0c;要注意与组合的区别。 代码 class Solution { public:vector<vector<int>…

在线教程|零门槛部署 Llama 3,70B 版本只占 1.07G 存储空间,新用户免费体验 8B 版本

4 月 18 日&#xff0c;Meta 宣布开源 Llama 3&#xff0c;这个号称「迄今为止最好的开源大模型」一经发布&#xff0c;立刻引爆科技圈&#xff01; 发布当天恰逢斯坦福大学教授、AI 顶尖专家吴恩达的生日&#xff0c;作为 AI 开源倡导者&#xff0c;他激动地发文表示&#xff…

Llama 3 ——开源大模型Llama 3从概念到使用

概述 Meta公司自豪地宣布推出其最新的开源大型语言模型——Llama 3&#xff0c;这是一款专为未来AI挑战而设计的先进工具。Llama 3包含两个不同参数规模的版本&#xff0c;以满足多样化的计算需求&#xff1a; 8B版本&#xff1a;优化了在消费级GPU上的部署和开发流程&#xf…