mapreduce知识点记录

简介: selfMapper extends Mapper< LongWritable, Text, Text, IntWritable> 其中LongWritable是某一行起始位置相对于文件起始位置的偏移量FileSplit继承extends InputSplitFileSplit fileSplit=(FileSplit) context.

selfMapper extends Mapper< LongWritable, Text, Text, IntWritable> 

其中LongWritable是某一行起始位置相对于文件起始位置的偏移量

FileSplit

继承extends InputSplit

FileSplit fileSplit=(FileSplit) context.getInputSplit();

String pathname=fileSplit.getPath().getName();//获取目录名字

intdepth = fileSplit.getPath().depth();//获取目录深度

Class class1 = fileSplit.getClass();//获取当前类

longlength = fileSplit.getLength();//获取文件长度

SplitLocationInfo[] locationInfo = fileSplit.getLocationInfo();//获取位置信息

String[] locations = fileSplit.getLocations();//获取位置

longstart = fileSplit.getStart();//The position of the first byte in the file to process.

多文件输入与输出

1.多文件输入

FileInputFormat.setInputPaths()

方法:static void setInputPaths(Job job, Path... inputPaths)、

static void setInputPaths(Job job, String commaSeparatedPaths)

2.多文件输出(MultipleOutputs)

public static class AlphabetOutputFormat extends  MultipleOutputFormat {

@Override

protected String generateFileNameForKeyValue(Text key, IntWritable value, Configuration conf) {

charc = key.toString().toLowerCase().charAt(0);

if(c >='a'&& c <='z') {

returnc +".txt";

}

return"other.txt";

}

}

Combiner

作为map和reduce的中间环节,它的作用是聚合map task的磁盘,减少map端磁盘写入,减少reduce端处理的数据量,对于有大量shuffle的job来说,性能往往取决于reduce端。因为reduce 端要经过从map端copy数据、reduce端归并排序,最后才是执行reduce方法,此时如果可以减少map task输出将对整个job带来非常大的影响。

什么时候可以使用Combiner?

比如你的Job是WordCount,那么完全可以通过Combiner对map 函数输出数据先进行聚合,然后再将Combiner输出的结果发送到reduce端。

什么时候不能使用Combiner?

WordCount在reduce端做的是加法,如果我们reduce需求是计算一大堆数字的平均数,则要求reduce获取到全部的数字进行计算,才可以得到正确值。此时,是不能使用Combiner的,因为会其会影响最终结果。 注意事项:即使设置Combiner,它也不一定被执行(受参数min.num.spills.for.combine影响),所以使用Combiner的场景应保证即使没有Combiner,我们的MapReduce也能正常运行。

shuffle与排序

Mapreduce的map结束后,把数据重新组织,作为reduce阶段的输入,该过程称 之为shuffle---洗牌。

而数据在Map与Reduce端都会做排序。

Map

• Map 的输出是由collector控制的

• 我们从collect函数入手

Reduce

•reduce的Shuffle过程,分成三个阶段:复制Map输出、排序合并、reduce处理。

•主要代码在reduce的 run函数

JVM重用

启动JVM是一个比较耗时的工作,所以在MapReduce中有JVM重用的机制。

•条件是统一个作业的任务。

•可以通过mapred.job.reuse.jvm.num.tasks定义重用次数,如果属性是-1那么为无限制

StringTokenizer


1、构造函数。

1.StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。

2.StringTokenizer(String str, String delim):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。

3.StringTokenizer(String str, String delim, boolean returnDelims):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。

2、方法。

说明:

1. 所有方法均为public;

2. 书写格式:[修饰符] <返回类型> <方法名([参数列表])>

如:

static int parseInt(String s) 表示:此方法(parseInt)为类方法(static),返回类型为(int),方法所需参数为String类型。

1.int countTokens():返回nextToken方法被调用的次数。如果采用构造函数1和2,返回的就是分隔符数量(例2)。

2.boolean hasMoreTokens():返回是否还有分隔符。

3.boolean hasMoreElements():结果同2。

4.String nextToken():返回从当前位置到下一个分隔符的字符串。

5.Object nextElement():结果同4。

6.String nextToken(String delim):与4类似,以指定的分隔符返回结果。

待续。。。。。。。。。。。。。。。

目录
相关文章
|
Rust 安全 编译器
如何在 Fedora 上安装 Rust?
如何在 Fedora 上安装 Rust?
703 0
如何在 Fedora 上安装 Rust?
|
SQL 人工智能 运维
一文带你玩转 CODE CHINA 的开源广场|Code China
「Code China Explore」即 CODE CHINA 开源广场,主要用于聚合平台的优质内容,包括了开源课程、项目、话题及开源组织等,可以让所有开源爱好者进行知识分享和学习。下面着重介绍 Code China Explore 上面的组织及其享受的权益、话题及项目。
1615 0
|
7月前
|
人工智能 机器人 Linux
OpenClaw 部署方案汇总|阿里云计算巢、轻量服务器、本地多系统搭建+钉钉接入+千问/Coding Plan配置指南
2026年,OpenClaw(Clawdbot)凭借开源、可扩展、多渠道接入的特性,成为个人与企业搭建专属AI助理的首选平台。从云端常驻运行到本地隐私部署,从独立使用到钉钉企业级协作,OpenClaw的部署场景覆盖全需求。本文基于2026年最新版本,提供阿里云计算巢零技术一键部署、阿里云轻量服务器手动部署、本地MacOS/Linux/Windows11全平台部署三种方案,详解阿里云千问大模型API与免费Coding Plan API配置,完整覆盖钉钉接入流程,并梳理高频问题与避坑指南,所有代码可直接复制执行,全程无营销词汇,助力新手零门槛落地OpenClaw。
556 0
|
8月前
|
人工智能 监控 安全
AI 智能体的上线
国内AI智能体上线已成高合规工程:须完成算法备案、安全评估与AIGC标识;部署沙箱+影子模式验证逻辑;设置“人在回路”审核闸门;通过对抗测试与内容过滤;建立负反馈闭环持续优化。安全稳定,方能落地关键业务闭环。(239字)
|
6月前
|
数据采集 人工智能 监控
京东商品详情API数据解析
本方案提供京东商品详情API(jd.item_get)完整解析,涵盖标准返回、关键字段及避坑指南;结合AI实现数据清洗、情感分析与爆款预测,支持智能选品、竞品监控、动态定价等场景,助力中小卖家高效落地电商智能决策。
|
6月前
|
机器学习/深度学习 缓存 搜索推荐
Java+AI实战:从零构建智能推荐系统(一)
教程来源 https://tmywi.cn/category/jiankang.html 本文详解如何用Java从零构建生产级智能推荐系统SmartRec,覆盖数据采集、特征工程、多路召回、深度排序、重排及A/B测试全链路。聚焦高并发、实时性与可扩展性,助你掌握AI落地核心能力。
|
6月前
|
人工智能 自然语言处理 安全
OpenClaw 与飞书绑定实操教程:企业IM接入AI服务一步到位
本文详解OpenClaw与飞书集成实操:从飞书开放平台获取App ID/Secret,到OpenClaw后台配置绑定,全程图文指引;涵盖常见报错排查与安全提示,助力企业5分钟完成AI服务接入,实现IM内即用智能问答、内容生成等能力。
|
9月前
|
弹性计算 小程序 关系型数据库
阿里云服务器多少钱一年?整理2026年云服务器新购、续费和升级配置费用清单
阿里云2026年服务器价格出炉!轻量服务器低至38元/年,ECS新购续费同价,2核2G仅99元/年起。本文详解轻量服务器与ECS区别、配置费用、升级规则及省钱技巧,助你选对方案,轻松上云,一年省下上千元。
|
9月前
|
数据采集 人工智能 安全
2026AI元年:AI 落地范式转移:已被反复验证的产业级实践共识
本文探讨AI从技术竞赛迈向产业落地的关键转型:2026年成规模化应用分水岭。强调落地核心不在模型参数,而在数据治理、工作流重构、RAG工程化、推理可控性、人类协同机制及四大落地准则——场景对齐、知识解耦、架构弹性、迭代闭环。
727 0
|
10月前
|
uml C语言
系统时序图
时序图(Sequence Diagram)是UML中描述对象间消息传递时间顺序的交互图。横轴为对象,纵轴为时间,通过生命线、控制焦点和消息等元素,直观展现系统动态协作过程,强调交互的时间顺序与并发行为,常用于分析和设计系统逻辑。

热门文章

最新文章