1.排序 1.1在使用实现Writable或WritableComparable接口来实现排序时,要注意,MapReduce底层的实现代码是根据map传回的key值来进行数据的排序的。如果想要实现基于value值得排序可以先在map中做数据的处理(例如:将前<K,V>键值对作为新的键值对的键也就是<<K,V>,V>)。 1.2=重写compareTo方法排序时,如果返回值为1,则当前对象与比较对象升序排列。如果返回值为-1,则当前对象与比较对象降序排列。返回值为0则同序。 2.获取文件时的编码问题 在我们学习测试时经常在本地创建文件,然后通过rz命令上传文件到虚拟机上,但是由于不注意编码的问题,MapReduce结束后输出的结果就会出现乱码,尤其是中文,因为MapReduce的底层编码写死的就是UTF-8。这时我们可以将上传的文件修改编码格式为UTF-8。但是这时还会出现一些编码问题,例如在做map端join操作的编码测试时,有可能会出现存入map的数据无法通过key(key的类型为String时)来获取,检查代码发现完全没有问题,最后发现在传入的key中加上\uFEFE就能获取到了,不理解是什么原理,大概是因为编码问题。找了好久解决不了,最后想了一个方法可以不用担心编码问题。可以直接在虚拟机上创建我们的测试数据的文件,这样不管中文,英文,都可以不用再担心编码问题。