1.在MapReduce中被分成了两类,map操作和reduce操作,1个job是由若干次map操作和1次reduce操作组成的。
在MapReduce中,最重要的就是理解数据在处理时都是以Key/Value形式输入输出的(在数据初始读入时,也是以Key/Value形式读入的)
2.对map、reduce操作的理解
①map是映射:简单理解的话可以理解成遍历原有数据集中的所有数据,针对每一条数据都用相同的逻辑对数据进行处理,然后再产生新的数据集。因为是遍历操作,所以每条数据都是独立的,所以是可以并行的,分布在不同机器上进行运算。
②reduce是归约:所谓的归约可以理解成框架将数据集按照Key值生成一个Value的List,在reduce回调方法中,可以这些数据进行处理。因为要将Key值相同的数据集中在一起进行处理,所以会有网络IO/磁盘IO,也就是shuffle,因此并行度低,执行速度慢。
3.使用MapReduce处理数据
①初学MapReduce,学习的是WordCount Example,在这个例子里的job是由1次map和1次reduce组成的,对于比较简单的逻辑这样就可以了,但是一个job实际上是可以由多次map和1次Reduce组成的。
②处理更复杂的逻辑需要在reduce前执行多次map操作或者再reduce操作后也需要使用map操作对reduce产生的结果进行处理,这个时候就可以使用ChainMapper来实现reduce前的多次map操作,reduce之后要执行map操作可以使用ChainReducer来实现。
③在更复杂的一些情况下,可能需要经过多次reduce,这个时候只需要在写Driver时顺序的写多个job设置前一个job的输出为后一个job的输入就可
大数据学习笔记(十七)-MapReduce
最新推荐文章于 2024-09-27 16:42:50 发布
本文介绍了MapReduce的工作原理,包括map和reduce操作。map负责遍历数据并生成新数据集,适合并行处理;reduce则进行数据归约,处理相同Key的数据,可能涉及shuffle,效率较低。MapReduce可用于初步ETL操作,但复杂计算更适合Spark。通过ChainMapper和ChainReducer可实现多步map和reduce操作,而MultipleInputs类用于处理多个输入源的连接操作。
摘要由CSDN通过智能技术生成