今天还剩点时间写一下我在写hadoop的编程习惯。昨天新给了一个活,而我今天基本上就把工作做完了。上面说我写的挺快的,其实这都得益于良好的编程习惯。
我见过网上很多hadoop的入门和编程代码,我都发现一个共性的误导问题。就是网上的代码都不乐于去自定义writable类。而是在map里处理数据,然后写个combiner,写三个job串联就觉得很高大上了。但是实际这么写的问题是:
- 数据可能变更字段,你还得去map函数里找
- 数据不变但是会有新的需求,你还得重写一遍。
- 有的数据格式极为复杂,你的map函数会变得极为冗余。
这些都会导致你为了一个新的任务,或者一点点改动,就要重写代码。这太浪费时间了。
因此写writable的习惯是非常好的。你对于一份数据,写一个特定的writable,这样你在有新的需求时,往该writable加新的方法,再来新的需求时,你又能用之前的算法,添加新的算法,反复迭代。如果数据发生一点变动,你可以继承下来,原来的代码也保留。
程序员少写一行代码多一根头发有什么不好。