Fork me on GitHub

Hadoop Writableについて

  • May 30, 2008

categoryプラグインは存在しません。

環境

Writableとは

Hadoopでは、keyとvalueのペアを大規模分散処理するが、そのどちらもWritableというインタフェースを実装したクラスとする必要がある。これは、ノード間でkey, valueの転送を行う際に、Serialize, Deserializeを行うため。

Writableの作り方

keyに使うクラスは、WritableComparatableを実装し、valueで使用するクラスは、Writableを実装する必要がある。

WritableComparableはGenericに対応していないため、compareToの引数は常にObjectとする必要がある。valueのほうは、Comparableは必須ではないため、Comparable<HogeClass> などのインタフェースを実装することで、compareToの引数に、型制限を加えることが可能。

Reducerが複数の場合にMapの結果を振り分ける処理(shuffle)が行われるが、この際にkeyのhashCodeが利用されるため、同じkeyは同じhashCodeを返すように、hashCode()をオーバーライドしておく必要がある。