MapReduce的学习心得

本文详细介绍了Hadoop MapReduce中自定义输出Key和Value的步骤,包括实现Writable接口进行序列化和反序列化,以及如何进行分区、排序和组合。同时,解释了如何自定义Partitioner、Comparator和OutputFormat,以满足特定的数据处理需求。此外,还讨论了在MapReduce中使用Combiner进行数据预聚合的方法和注意事项。
摘要由CSDN通过智能技术生成

1如果需要自定义Bean类型来充当输出的Key或Value,则自定义的Bean类要继承Writable接口并实现序列化及反序列化方法,序列化反序列化顺序要一致,要有空参构造器,要提供toString

2.如果自定义序列化类充当输出的Key或Value的同时,还需要自定义排序规则,则可以继承WritableComparable接口实现序列化反序列话方法和compareTo方法进行排序(二次排序等等都可)

3.若要进行分区,则需要自定义类继承Partitioner类重写getPartition方法,并在drive中用setPartitionerClass方法建立job与Partitioner实现类的连接,同时设置reduceTask数量,reduceTask数量要与分区数量一致

4.若要启动combiner组件,则自定义一个类同时继承reduce,同时重写Reduce方法,同时在Drive中用setCombinerClass方法建立job与此类的连接(更像提前进行reduce)通常情况下,都是判断好能用combiner组件提前聚合,然后直接在drive中调用SetCombinerclass方法,用reducer类来充当引用类

5.若默认的自带的outputformat都不能满足客户需求(inputformat也可以自定义),则可以自定义outputformat类继承FileOutputFormat接口,重写getRecordWriter,重写getRecordWriter方法时要再用一个自定义类(流的方向要在此构造器中声明)继承RecordWriter类重写Writer和close方法,其中Write是核心方法写输出流用于输出等,close是流的关闭,,最后还要在drive中设置(setOutputFormatClass)自定义的outputformat,同时要设置一个_success文件的输出位置

6.若需要进行连接操作,可以用map连接和reduce连接,reduce连接要重写的map类中重写初始化方法(setup)来获取文件的信息,map连接要再drive驱动中加载小表到内存中,然后要重写map类中的setup方法来获取缓存文件的信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值