看到这篇文章,肯定会有人问,“为什么要用scala来写MR, java写不是更自然?” 关于这个我问题,我个人的原因是: scala 写代码很简洁,而且我很享受这种体验。对于其它scala程序员来说,可能是因为所有项目都是用scala写,而且写scala更熟练些。对于这部分人非得用MR来解决的问题,那他一定有很充分的理由。
归正题吧, 下面讲讲用如何上手操作吧!! 鉴于大家使用的IDE和编译工具不一样,这里就不多说,用自己熟悉的就好。
对于简单的MR程序,将小文件合并成大文件,说他简单是因为没有复杂的map和reduce计算算法。以这个简单的示例主要讲一下scala写mr的语法,其它和java写是一样的。首先,需要有三个类 : mapper计算类,reduce计算类,和一个driver类
下面先给一个自己写的Mapper类的代码:
class SmallFileMapper extends Mapper[LongWritable, Text ,Text, Text]{ @throws(classOf[IOException]) @throws(classOf[InterruptedException]) override def map(key : LongWritable, value : Text, context : Mapper[LongWritable,Text,Text,Text]#Context) : Unit = { val