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类似,以指定的分隔符返回结果。

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

目录
相关文章
|
7月前
|
SQL 消息中间件 分布式计算
Hive 中级练习题(40题 待更新)
Hive 中级练习题(40题 待更新)
|
分布式计算 Hadoop 大数据
MapReduce 案例之数据去重
MapReduce 案例之数据去重
314 0
|
7月前
|
存储 大数据 OLAP
一文快速搞懂Kudu到底是什么
一文快速搞懂Kudu到底是什么
1487 0
|
分布式计算 负载均衡 Hadoop
|
分布式计算 Java Hadoop
Hadoop快速入门——第三章、MapReduce案例(字符统计)(1)
Hadoop快速入门——第三章、MapReduce案例(字符统计)
156 0
Hadoop快速入门——第三章、MapReduce案例(字符统计)(1)
|
存储 分布式计算 Hadoop
Hadoop快速入门——第三章、MapReduce案例(字符统计)(2)
Hadoop快速入门——第三章、MapReduce案例(字符统计)
138 0
Hadoop快速入门——第三章、MapReduce案例(字符统计)(2)
|
分布式计算 资源调度 Java
Hadoop中的MapReduce概述、优缺点、核心思想、编程规范、进程、官方WordCount源码、提交到集群测试、常用数据序列化类型、WordCount案例实操
Hadoop中的MapReduce概述、优缺点、核心思想、编程规范、进程、官方WordCount源码、提交到集群测试、常用数据序列化类型、WordCount案例实操
Hadoop中的MapReduce概述、优缺点、核心思想、编程规范、进程、官方WordCount源码、提交到集群测试、常用数据序列化类型、WordCount案例实操
|
存储 缓存 负载均衡
大白话彻底搞懂 HBase Rowkey 设计和实现方式
大白话彻底搞懂 HBase Rowkey 设计和实现方式
838 0
大白话彻底搞懂 HBase Rowkey 设计和实现方式
|
SQL 存储 分布式计算
Hive面试题整理
Hive表关联查询,如何解决数据倾斜的问题、Hive的HSQL转换为MapReduce的过程、Hive底层与数据库交互原理、Hive的两张表关联,使用MapReduce怎么实现、请谈一下Hive的特点,Hive和RDBMS有什么异同、请说明hive中 Sort By,Order By,Cluster By,Distrbute By各代表什么意思、写出hive中split、coalesce及collect_list函数的用法(可举例)、Hive有哪些方式保存元数据,各有哪些特点、Hive内部表如何解决呢。
280 0
Hive面试题整理
|
分布式计算 Hadoop 开发者
MapReduce 工作流程(面试重点)| 学习笔记
快速学习 MapReduce 工作流程(面试重点)
173 0
MapReduce 工作流程(面试重点)| 学习笔记