🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## MapReduce的主要的六个类讲解 ### a、InputFormat类。 该类的作用是将输入的文件和数据分割成许多小的split文件, 并将split的每个行通过LineRecorderReader解析成,通过job.setInputFromatClass()函数来设置, 默认的情况为类TextInputFormat,其中Key默认为字符偏移量,value是该行的值。 ### b、Map类。 根据输入的对生成中间结果,默认的情况下使用Mapper类, 该类将输入的对原封不动的作为中间按结果输出,通过job.setMapperClass()实现。实现Map函数。 ### c、Combine类。 实现combine函数,该类的主要功能是合并相同的key键,通过job.setCombinerClass()方法设置, 默认为null,不合并中间结果。实现map函数 ### d、partitioner类。 该该主要在Shuffle过程中按照Key值将中间结果分成R份,其中每份都有一个Reduce去负责, 可以通过job.setPartitionerClass()方法进行设置,默认的使用hashPartitioner类。实现getPartition函数 ### e、Reducer类。 将中间结果合并,得到中间结果。通过job.setReduceCalss()方法进行设置,默认使用Reducer类,实现reduce方法。 ### f、OutPutFormat类,该类负责输出结果的格式。 可以通过job.setOutputFormatClass()方法进行设置。 默认使用TextOUtputFormat类,得到对。 - note: hadoop主要是上面的六个类进行mapreduce操作,使用默认的类,处理的数据和文本的能力很有限, 具体的项目中,用户通过改写这六个类(重载六个类),完成项目的需求。说实话,我刚开始学的时候, 我怀疑过Mapreudce处理数据功能,随着学习深入,真的很钦佩mapreduce的设计,基本就二个函数,通过重载,可以完成所有你想完成的工作。