💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
在编写 mapreduce 程序时,需要考虑的几个方面: 1. 输入数据接口:InputFormat 默认使用的实现类是:TextInputFormat TextInputFormat 的功能逻辑是:一次读一行文本,然后将该行的起始偏移量作为 key,行内容作为 value 返回。 用户还可以自定义 InputFormat。 2. 逻辑处理接口:Mapper 用户根据业务需求实现其中三个方法:map(),setup(),cleanup () 。 3. Partitioner 分区 有默认实现 HashPartitioner,逻辑是根据 key 的哈希值和 numReduces 来返回一个分区号;key.hashCode()&Integer.MAXVALUE % numReduces。 如果业务上有特别的需求,可以自定义分区。 4. Combiner 合并 Combiner 合并可以提高程序执行效率,减少 io 传输。但是使用时必须不能影响原有的业务处理结果。 5. 逻辑处理接口:Reducer 用户根据业务需求实现其中三个方法:reduce(),setup(),cleanup () 6. 输出数据接口:OutputFormat 默认实现类是 TextOutputFormat,功能逻辑是:将每一个 KV 对向目标文本文件中输出为一行。 用户还可以自定义 OutputFormat。