自作のwritable を使用する場合の注意点

MapReduceで、
java.io.IOException: Type mismatch in key from map:・・・
とかいう例外が出た。
半日調べた末、Job#setMapOutputKey/ValueClass で自作Writableのクラスを設定してやったら解消した・・・
wordcountチュートリアルなんかでは setMapOutput… は使ってないのだが・・・標準装備のWritableなら自動で判別してくれるのかな・・・

ちなみに、cdh3u2 だと、MapTask.java の818行目以下で
keyClass = (Class)job.getMapOutputKeyClass();
valClass = (Class)job.getMapOutputValueClass();
としており、JobConfからクラス名を取得している様子。