Asakusa Framework0.2.5で試験導入されたDirect I/Oを使用して、CSVファイルを対象とするWordCountを作ってみた。
AsakusaFW0.2.4でWindGateがCSVファイルに対応したけど、これはローカルファイルをCSVとして扱うものだった。
今回のDirect I/Oでは、HDFS上のファイルを直接CSVファイルとして扱える。(どちらかと言えば従来のbatchapp(MySQLを使わない方式)の拡張という感じに思える)
DMDLにアノテーションを指定するという記述方法はWindGate版と同じだが、生成されるImporter/Exporter(今回はInputDescriptoin/OutputDescriptionという名前になってる)の内容が異なる。
WindGate版には無かった機能として、OutputDescriptionでは出力ファイルのソート項目が指定できる。
実はこっそりissuesに登録していたものだったんだけど、対応していただいてありがとうございます。
issuesでは「出力したファイル内の順序がCoGroup/GroupSortで指定したソート順になっていない」という内容だったんだけど、そもそもCoGroup/GroupSortのソート順の指定は入力時のソートだから、出力時のソート順ではないんだよね。そういう意味ではファイルの出力方法を指定するOutputDescriptionでソート順を書く方が理に適っている。
asc/descと書く代わりに+/-だったのが「あれー?w」って感じだったけどw
ただ、ソート順が正しいかどうかを試験する方法は未提供みたい。
(そもそもキーが重複するような出力には今のExcelのruleでは対応できないし)
AsakusaFW0.2.5では、Hadoopの対象バージョンも変更になっている。(Eclipseも3.7が対象に入った気がする)
従来のCDH3だけでなく、コミュニティー版Hadoopの0.20.203.0に対応したらしい。
AWS(Amazon Web Services)のEMR(Elastic MapReduce)にAsakusaFWが対応していない理由が「CDH3に入っているクラスが無いこと」だったと思うので、その対応かな?
と思ったけど、EMRのHadoopのバージョンは今は0.20.205らしい。
(でも0.20.203に対応しておけば、0.20.205でも動くはずだよね)
むしろWindows AzureのHadoopが0.20.203っぽいから、もしかしてその辺りをターゲットにしているのかも!?
なんか思ってもみない方向の対応が突然リリースされるので、びっくりですねw