ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

ScalaのREPL上でHadoopのHDFSを操作する

2011-10-02 00:46:24 | PG(Scala)

ScalaのREPL上でHadoopのHDFSを操作してみた(笑)
で、それを便利?に扱うライブラリーを作ってみた。

ちなみに、ソースはGitHub公開してみた。初Git!
まだEclipseからの直接の連携は出来てないけど、ソースを公開するには便利だなー^^


今回作ろうと思ったきっかけは、Pigを使っていて、ファイル名を変数で扱いたいなーと思ったこと。と、ファイルに簡単なデータを直接書き込めればいいのになーと思ったこと。
(Pigはlsとかcdとかgetとかを使ってファイル一覧を見たりするのは便利だけど、プログラミング言語ほどの高機能ではないので。
また、PigもHiveもHueも簡単なデータを入れるような機能は無い)

そこで、我等がScalaの出番(笑)
ScalaはREPLがあるので対話型で使えるし、Hadoopは結局Javaのクラスだから、呼び出せるはず!
という読みがバッチリ当たった。まぁ、意外なところで色々と(バグを踏んだりして)はまったけどね^^;

ただ単にファイルが見られるだけとかだったらPigの二番煎じで大して便利でもないかーと思ってたけど、作ってみたら意外と便利かもしれないと思った。
ちょっとしたテストデータを作ったり見たりするには良さそう。
今はテキストファイルだけしか想定してないけど、シーケンスファイルを読み込むのだって難しい話じゃないもんな。AsakusaFWで作ったファイルを直接見るとかも(クラスパスとインポートだけ追加すれば)出来るかも?


さて、本当は次のステップとしてREPL上で直接Mapper・Reducerを書いてHadoopで実行しちゃうという野望があったんだけど。
Hadoopを実行する際はクラスをjarファイル化する必要があるので、そこがクリアできてない…。

一応、:powerモードを使って、「intp.virtualDirectory」で仮想ファイル一覧が取れて、それを実ファイルシステム上に保存したらclassになるというところまでは発見したんだけど。
これって自分が定義したクラスそのものではない(REPL上での実行用のラッパークラスっぽい)ので、直接は使えなさそうなんだよねー。

なんか良い方法ないかなー。



最新の画像もっと見る

コメントを投稿